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

Я пытаюсь извлечь данные из таблицы Hive и записать в локальные файлы:

Один выходной файл на значение столбца «Дата».Моя таблица Hive будет иметь более чем 2-летнюю историю данных, а это значит, что мне потребуется более 700+ различных выходных файлов.

Мои текущие знания позволят мне писать только один файл за цикл, это мой кодможно запустить в командной строке Hive:

INSERT OVERWRITE LOCAL DIRECTORY '/local/hive/temp'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
select date, col1, col2, col3, col4, col5
from WH_TEMP_EXTRACT.table_temp
where date='2015-09-17';

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

1 Ответ

0 голосов
/ 20 сентября 2018

Извлечение всех данных за 2 года в одном запросе в локальный файл.После этого вы можете использовать команду awk, чтобы получить их в отдельные файлы, как показано ниже.

/tmp/hive> ls -l
total 4
-rw-r--r-- 1 xxxxxxx yyyyyy 228 Sep 20 10:11 hive_extract.dat
/tmp/hive> cat hive_extract.dat
2018-09-17,abc,134
2018-09-17,abc,135
2018-09-17,abc,136
2018-09-17,abc,137
2018-09-17,abc,138
2018-09-18,abc,141
2018-09-18,abc,142
2018-09-18,abc,143
2018-09-18,abc,144
2018-09-19,abc,150
2018-09-19,abc,151
2018-09-19,abc,152
/tmp/hive> awk -F"," '{ print $0 > "file_"$1 }' hive_extract.dat
/tmp/hive> ll
total 28
-rw-r--r-- 1 xxxxxxx yyyyyy 228 Sep 20 10:11 hive_extract.dat
-rw-r--r-- 1 xxxxxxx yyyyyy  57 Sep 20 10:13 file_2018-09-19
-rw-r--r-- 1 xxxxxxx yyyyyy  76 Sep 20 10:13 file_2018-09-18
-rw-r--r-- 1 xxxxxxx yyyyyy  95 Sep 20 10:13 file_2018-09-17
/tmp/hive> cat file_2018-09-17
2018-09-17,abc,134
2018-09-17,abc,135
2018-09-17,abc,136
2018-09-17,abc,137
2018-09-17,abc,138
/tmp/hive> cat file_2018-09-18
2018-09-18,abc,141
2018-09-18,abc,142
2018-09-18,abc,143
2018-09-18,abc,144
/tmp/hive> cat file_2018-09-19
2018-09-19,abc,150
2018-09-19,abc,151
2018-09-19,abc,152
/tmp/hive>

, дайте мне знать, будет ли это решение работать на вас.

РЕДАКТИРОВАТЬ 1: используйте gsub

awk -F"," '{ gsub("-","_",$1); print $0 > "file_"$1 }' hive_extract.dat

РЕДАКТИРОВАТЬ 2:

awk -F"," 'BEGIN { OFS=","} { gsub("-","_",$1); print $0 > "file_"$1 }' hive_extract.dat

РЕДАКТИРОВАТЬ 3:

awk -F"," '{ fx=$1;gsub("-","_",fx);print $0 > "file_"fx }' hive_extract.dat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...