Альтернативные способы загрузки файлов из HDFS в куст, когда их нет в каталоге - PullRequest
0 голосов
/ 12 мая 2018
ROW FORMAT DELIMITED FIELDS TERMINATED BY '${database_delimiter}'
LINES TERMINATED BY '\n' STORED AS TEXTFILE
LOCATION '${database_location}/Person';

Здесь человек должен быть каталогом.В то время как человек - это файл part-m, а не каталог.

1 Ответ

0 голосов
/ 12 мая 2018

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

Следовательно, любой процесс, который у вас есть, должен сделать указанный каталог.

Например, независимо от того, какой процесс сопоставления у вас есть, вам нужно было указать выходной каталог каталог , и если вам это не удалось, ваши файлы будут помещены в какое-то место рядом с другими файлами. (MapReduce должен потерпеть неудачу, говоря, что каталог назначения уже существует).

Что вы можете сделать, это переместить все файлы деталей в новое место

$ hdfs dfs -mkdir -p ${database_location}/Person/
$ # create hive table using that location
$ hdfs dfs -mv  ${database_location}/part-m* ${database_location}/Person/
$ # run hive query

Или, если у вас были необработанные файлы, вы можете сделать что-то подобное

$ hdfs dfs -mkdir -p ${database_location}/Person/
$ # create hive table using that location
$ hdfs dfs -put somefile ${database_location}/Person/
$ # run hive query

Или используйте LOCAL DATA INPATH для чтения из одного расположения HDFS в таблицу Hive

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