暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Hive+Shell 输出重定向导出数据

趣说大数据 2021-03-11
2348
01

简述


本文介绍一种通过Hive命令+Shell输出重定向的方式,导出CSV(TSV)格式数据。

02

案例介绍


通过hive(beeline --help)命令查看完整的参数列表,这里介绍一下本次使用到的参数。
-u 指定url地址
-n 指定用户
-e 指定查询SQL语句
--showHeader 是否显示表头信息
--outputformat=[table/vertical/csv2/tsv2/dsv/csv/tsv] 输出分隔符
--nullemptystring=[true/false] set to true to get historic behavior of printing null as empty string
复制
shell输出重定向命令介绍
标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
复制
导出数据时,不希望将Hive的日志追加到文件中,可将执行日志重定向到文件或者/dev/null(黑洞)。
beeline -u jdbc:hive2://bigdata01:10000 -n admin \
--showHeader=true --outputformat=csv --nullemptystring=true \
-e "select * from default.student4 limit 1" 2>>output.txt
复制
执行命令在控制台打印结果如下(输出带表头CSV格式数据):
'student4.m_id','student4.address_contry','student4.address_province','student4.address_city','student4.info_age','student4.info_birthday','student4.info_company','student4.d_date','student4.p_type'
'10000','测试10000','地址省10000','城市0','年龄10000','生日10000','公司10000','2020-09-03','test'
复制
现将标准输入部分重定向到文件中:
beeline -u jdbc:hive2://bigdata01:10000 -n admin \
--showHeader=true --outputformat=csv --nullemptystring=true \
-e "select * from default.student4 limit 1" 1>student.txt 2>>output.txt


复制
查看student.txt文件
cat student.txt 得到文件中的内容如下:
'student4.m_id','student4.address_contry','student4.address_province','student4.address_city','student4.info_age','student4.info_birthday','student4.info_company','student4.d_date','student4.p_type'
'10000','测试10000','地址省10000','城市0','年龄10000','生日10000','公司10000','2020-09-03','test'
复制
完整导出CSV带表头数据命令如下:
beeline -u jdbc:hive2://bigdata01:10000 -n admin \
--showHeader=true --outputformat=csv --nullemptystring=true \
-e "select * from default.student4 limit 1" 1>student.txt 2>>/dev/null


复制
根据参数showHeader 控制是否输出表头,outputformat指定字段分隔符,将Hive表中的数据输出到文件,实现数据导出。

03

小技巧


       仅输出表头的SQL语句:

select * from 表名 where false
复制
导出Hive表头(CSV):
beeline -u jdbc:hive2://bigdata01:10000 -n admin \
--showHeader=true --outputformat=csv --nullemptystring=true \
-e "select * from default.student4 where false" 1>head.txt 2>>/dev/null
复制
输出结果如下:
'student4.m_id','student4.address_contry','student4.address_province','student4.address_city','student4.info_age','student4.info_birthday','student4.info_company','student4.d_date','student4.p_type'
复制
文章转载自趣说大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论