Я запускаю запрос куста java-кода. Пример:
"SELECT * FROM table WHERE id > 100"
Как экспортировать результат в файл hdfs.
Я запускаю запрос куста java-кода. Пример:
"SELECT * FROM table WHERE id > 100"
Как экспортировать результат в файл hdfs.
Следующий запрос будет вставлять результаты непосредственно в HDFS:
INSERT OVERWRITE DIRECTORY '/path/to/output/dir' SELECT * FROM table WHERE id > 100;
Эта команда перенаправляет вывод в текстовый файл по вашему выбору:
$hive -e "select * from table where id > 10" > ~/sample_output.txt
Это приведет к результатам в файлах с разделителями табуляции в каталоге:
INSERT OVERWRITE LOCAL DIRECTORY '/home/hadoop/YourTableDir'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
SELECT * FROM table WHERE id > 100;
@Сарат, как перезаписать файл, если я хочу запустить другую команду select * из другой таблицы и записать в тот же файл?
ВСТАВИТЬ ПЕРЕЗАПИСАТЬ ЛОКАЛЬНУЮ КАТАЛОГ '/home/training/mydata/output' SELECT expl, count (expl) как итог
FROM (SELECT взорвать (разбить) как expl FROM (SELECT разбить (слова, '') как разбить FROM wordcount) t2) t3 GROUP BY expl;
Это пример вопроса сарат
вышеупомянутое задание количества слов хранится в выходном файле, который находится в локальной директории :)
Я согласен с ответом tnguyen80. Обратите внимание, что когда в запросе будет задано определенное строковое значение, чтобы получить полный запрос в двойных кавычках.
Например:
$hive -e "select * from table where city = 'London' and id >=100" > /home/user/outputdirectory/city details.csv
Идеальный способ сделать это будет использовать "INSERT OVERWRITE DIRECTORY" /pathtofile "select * from temp, где id > 100" вместо "hive -e" select * from... ' > /filepath.txt "
Чтобы непосредственно сохранить файл в HDFS, используйте следующую команду:
hive> insert overwrite directory '/user/cloudera/Sample' row format delimited fields terminated by '\t' stored as textfile select * from table where id >100;
Это поместит содержимое в папку /user/cloudera/Sample в HDFS.
Введите эту строку в интерфейс командной строки Hive:
insert overwrite directory '/data/test' row format delimited fields terminated by '\t' stored as textfile select * from testViewQuery;
testViewQuery
- какой-то конкретный вид
Пример:
Создание внешней таблицы для хранения результатов запроса в '/user/myName/projectA_additionaData/'
CREATE EXTERNAL TABLE additionaData
(
ID INT,
latitude STRING,
longitude STRING
)
COMMENT 'Additional Data gathered by joining of the identified cities with latitude and longitude data'
ROW FORMAT DELIMITED FIELDS
TERMINATED BY ',' STORED AS TEXTFILE location '/user/myName/projectA_additionaData/';
Подача результатов запроса во временную таблицу
insert into additionaData
Select T.ID, C.latitude, C.longitude
from TWITER
join CITY C on (T.location_name = C.location);
Отбрасывание временного стола
drop table additionaData
Чтобы установить выходной каталог и формат выходного файла и многое другое, попробуйте следующее:
INSERT OVERWRITE [LOCAL] DIRECTORY directory1
[ROW FORMAT row_format] [STORED AS file_format]
SELECT ... FROM ...
Пример:
INSERT OVERWRITE DIRECTORY '/path/to/output/dir'
ROW FORMAT DELIMITED
STORED AS PARQUET
SELECT * FROM table WHERE id > 100;