使用insert overwrite导出包含标头的hive表

时间:2017-01-10 12:00:25

标签: hive

我想将hive表数据导出到带有标题的json文件。 我编写了一个shell脚本,用于将hive表数据导出为json文件,但我希望标题随数据一起出现。 我正在使用insert overwrite来解决这个问题。

这是我的剧本,

hive -e "set hive.cli.print.header=true ; 
insert overwrite local directory '/home/zeas/Chaitra/result' 
row format SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' 
STORED AS TEXTFILE  select * from zeas.demo_airline_data_dataset"

即使我有set hive.cli.print.header=true;,标题也不会出现。 有没有办法使用insert overwrite来获取标题和数据?

1 个答案:

答案 0 :(得分:0)

使用beeline,您可以使用--showheader=true查看标题,如果您不写--showheader=false,这也是默认设置。

如果仍然看不到它,则可以使用类似下面的查询来仅获取标头,然后在写入内容之前将其写入输出文件中

header=`<BEELINE_CONN_STRING> --silent=true --outputformat=dsv --delimiterForDSV=<delimiter> -e "set tez.queue.name=<queuename>; use <database_name>; select * from <table_name> limit 0;"`

下面一行是删除table_name,因为我们通常不希望最终输出中的表名

echo $header | sed "s/<table_name>.//g" >> ${final_output_file}