Как загрузить текстовый файл в таблицу Hive, сохраненную в виде файлов последовательности
У меня есть таблица улья, хранящаяся как файл последовательности.
Мне нужно загрузить текстовый файл в эту таблицу. Как загрузить данные в эту таблицу?
Ответ 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;