Подтвердить что ты не робот

Как загрузить текстовый файл в таблицу Hive, сохраненную в виде файлов последовательности

У меня есть таблица улья, хранящаяся как файл последовательности.

Мне нужно загрузить текстовый файл в эту таблицу. Как загрузить данные в эту таблицу?

4b9b3361

Ответ 1

Вы можете загрузить текстовый файл в текстовую таблицу Hive, а затем вставить данные из этой таблицы в ваш файл последовательности.

Начните с файла с разделителями табуляции:

% cat /tmp/input.txt
a       b
a2      b2

создать файл последовательности

hive> create table test_sq(k string, v string) stored as sequencefile;

попробуйте загрузить; как и ожидалось, это провалится:

hive> load data local inpath '/tmp/input.txt' into table test_sq;

Но с этой таблицей:

hive> create table test_t(k string, v string) row format delimited fields terminated by '\t' stored as textfile;

Загрузка очень просто:

hive> load data local inpath '/tmp/input.txt' into table test_t;
OK
hive> select * from test_t;
OK
a       b
a2      b2

Теперь загрузите в таблицу последовательностей из текстовой таблицы:

insert into table test_sq select * from test_t;

Также можно загружать/вставлять с помощью перезаписи для замены всех.

Ответ 2

Вы не можете напрямую создать таблицу, хранящуюся в виде файла последовательности, и вставить в нее текст. Вы должны сделать это:

  • Создать таблицу, сохраненную как текст
  • Вставьте текстовый файл в текстовую таблицу
  • Сделайте CTAS для создания таблицы, сохраненной в виде файла последовательности.
  • При необходимости удалите текстовую таблицу

Пример:

CREATE TABLE test_txt(field1 int, field2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

LOAD DATA INPATH '/path/to/file.tsv';

CREATE TABLE test STORED AS SEQUENCEFILE
AS SELECT * FROM test_txt;

DROP TABLE test_txt;