Как объединить несколько текстовых файлов в таблицу Hive - PullRequest
0 голосов
/ 27 апреля 2018

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

Вот как бы я это сделал, если бы я знал путь к указанному каталогу, / объединить:

LOAD DATA INPATH '/combine/file1.txt' INTO TABLE tablename;
LOAD DATA INPATH '/combine/file2.txt' INTO TABLE tablename;

Но как получить тот же результат, если вы не знаете пути к файлам, только каталог?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

только символ * может загрузить все файлы из каталога e в таблицу.

LOAD DATA INPATH '/combine/*' INTO TABLE tablename;
0 голосов
/ 27 апреля 2018

Вы можете использовать внешний стол Hive.

Создайте папку в HDFS и загрузите туда два файла:

hadoop fs -mkdir /hive-data
hadoop fs -put file1.txt /hive-data/file1.txt
hadoop fs -put file2.txt /hive-data/file2.txt

В качестве альтернативы укажите каталог для загрузки всех файлов:

hadoop fs -put directory-with-files/* /hive-data/

Убедитесь, что файлы загружены правильно:

hadoop fs -ls /hive-data

Создайте внешнюю таблицу в Hive и обратитесь к расположению HDFS:

(Измените разделители схемы, поля и строки, чтобы они соответствовали вашим файлам данных.)

CREATE EXTERNAL TABLE tablename
(
    id INT,
    desc STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
LOCATION 'hdfs:///hive-data';

Проверка данных в кусте:

select * from tablename;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...