hive使用beeline将hql结果导出为csv文件

版权声明:个人 https://blog.csdn.net/csdnmrliu/article/details/82797116

编写shell脚本自动化导出指定hql结果到csv文件并删除sql语句和关闭连接日志

1. hql文件准备

select a.enodebid as enodebid,
	   sum(xdrsize) as totalXdrSize,
	   sum(failed) as totalFailed,
	   sum(success) as totalSuccess
  from test.imsiBackFill a
 where date_id = 20180920
   and hour = 10
 group by enodebid;

2. shell脚本编写

#!/bin/bash
#要查询的sql语句 eg: *.hql
sqlFile=$1
#导出文件完整路径 eg: */resultData.csv
exportFilePath=$2
#导入hive查询结果命令 注意beeline使用完整路径
/usr/local/hive-1.2.2/bin/beeline -u jdbc:hive2://mace:10000 --outputformat=csv2 --showHeader=true -f ${sqlFile} >${exportFilePath}
#处理导出文件 删除sql及最后一行
rowNum=$(cat ${sqlFile}|wc -l)
#删除sql语句(默认为sql文件的行数)
$(sed -e "1,${rowNum}d" $exportFilePath -i)
exportFileRowNum=$(cat ${exportFilePath}|wc -l)
#删除关闭beeline连接(最后一行)
$(sed -e "${exportFileRowNum}d" $exportFilePath -i)

3.执行命令

sh exportHiveDataBySQL.sh */select.hql */resultData.csv

注: sed命令 是linux下利用脚本处理文件。详细参考:http://www.runoob.com/linux/linux-comm-sed.html

猜你喜欢

转载自blog.csdn.net/csdnmrliu/article/details/82797116
今日推荐