Hive 使用插入覆盖导出包含标题的配置单元表

Hive 使用插入覆盖导出包含标题的配置单元表,hive,Hive,我想将配置单元表数据导出到带有标题的json文件中。 我已经编写了一个shell脚本,用于将配置单元表数据导出为json文件,但我希望标题与数据一起提供。 我正在使用插入覆盖来解决这个问题 这是我的剧本 hive -e "set hive.cli.print.header=true ; insert overwrite local directory '/home/zeas/Chaitra/result' row format SERDE 'org.apache.hive.hcatalog.

我想将配置单元表数据导出到带有标题的
json
文件中。 我已经编写了一个shell脚本,用于将配置单元表数据导出为
json
文件,但我希望标题与数据一起提供。 我正在使用插入覆盖来解决这个问题

这是我的剧本

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"
即使我已
设置hive.cli.print.header=true,没有出现标题。

是否有任何方法可以使用插入覆盖获取标题和数据?

使用直线,您可以使用
--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;"`
header=`--silent=true--outputformat=dsv--delimiterForDSV=-e“set tez.queue.name=;use;从限制0中选择*`
下一行是删除表名,因为我们通常不希望表名出现在最终输出中

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

hive.cli.print.header=true用于打印cli输出中的头,而不是文件中的头。那么如何获取头?Json文件没有任何头。。。它具有键值对。。