Hive, как получить имя столбца при выводе запроса (а не table_name.column_name)

Используя Hive, я хотел бы получить результат запроса внутри файла csv, я также хотел бы получить заголовок.

Для этого я выполняю:

hive -e '
    use database;
    set hive.cli.print.header=true;
    select * from table;
' > /home/centos/user/result.csv

Но первая строка csv:

table.field1_name,table.field2_name,table.field3_name

Как я могу попасть внутрь:

field1_name,field2_name,field3_name

person user3636476    schedule 17.03.2016    source источник


Ответы (4)


Мне просто нужно было добавить:

set hive.resultset.use.unique.column.names=false;
person user3636476    schedule 17.03.2016
comment
Вы можете улучшить свой ответ, добавив объяснение, почему это работает. - person simbabque; 17.03.2016

sed выполнит эту работу.

Предположим, что fun.csv содержит следующее:

table.field1_name,table.field2_name,table.field3_name

Затем я делаю следующее в командной строке:

sed -e 's/table.//g' < fun.csv > fun2.csv

Теперь у fun2.csv есть:

field1_name,field2_name,field3_name
person xxks-kkk    schedule 17.03.2016
comment
да, я знаю, что могу это сделать, но я полагаю, что вариант улья доступен - person user3636476; 17.03.2016
comment
@user3636476 user3636476 рад, что вы нашли решение, но, думаю, один вкладыш не повредит :) - person xxks-kkk; 17.03.2016

вы можете использовать select column1,column2 from tablename вместо select * from tablename, в этом случае tablename не будет добавлено в имя столбца. В этом случае не нужно давать команду sed.

person Jegan Baskar    schedule 21.02.2017

я использую

hive -e 'set hive.cli.print.header=true; select * from database.table;' | sed 's/[\t]/,/g' > /your_path_to_csv

Это работает хорошо для меня.

Ссылка: разделитель вывода запроса Hive

person Yang Song    schedule 07.06.2016