Действительно, ответ @ nija верен - по крайней мере, насколько я знаю.Нет никакого способа записать имена столбцов при выполнении insert overwrite into [local] directory ...
(независимо от того, используете ли вы локально или нет).
Что касается сбоев, описанных @ user1735861, в кусте есть известная ошибка 0.7.1
(исправлено в 0.8.0
), которое после выполнения set hive.cli.print.header=true;
вызывает NullPointerException
для любой команды / запроса HQL, которая не производит никакого вывода.Например:
$ hive -S
hive> use default;
hive> set hive.cli.print.header=true;
hive> use default;
Exception in thread "main" java.lang.NullPointerException
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:222)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:287)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:517)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.hadoop.util.RunJar.main(RunJar.java:197)
Принимая во внимание, что это нормально:
$ hive -S
hive> set hive.cli.print.header=true;
hive> select * from dual;
c
c
hive>
Команды, не относящиеся к HQL, хороши (set
, dfs
!
и т. Д.)
Подробнее здесь: https://issues.apache.org/jira/browse/HIVE-2334