使用插入覆盖导出带有标头的配置单元表

  • 本文关键字:配置 单元 插入 覆盖 hive
  • 更新时间 :
  • 英文 :


我想将 hive 表数据导出到带有标头的 json 文件中。我编写了一个 shell 脚本,用于将 Hive 表数据导出为 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"

即使我有set 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;"`

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

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

最新更新