Hive - 数据导出方式整理

数据导出方式有以下几种

  • hive 查询重定向到文件
  • 通过查询将数据写入文件(insert overwrite directory)
  • 通过beeline导出

hive查询重定向:(不能指定分隔符)

hive -e "select * from table_name" > /data/test/table_name.txt

hive查询会打印异常日志,可以通过shell 过滤到异常信息

hive -e "select * from table_name" |grep -v 'WARN' > /data/test/table_name.txt

通过查询将数据写入文件

hdfs:

insert overwrite directory '/tmp/test/testFile' 
row format delimited fields terminated by '&' 
select * from test.test_tmp_table;
该命令生成文件为切分文件(eg:000000_0 000001_0 000002_0)

若需合并文件用如下命令
hadoop fs -getmerge /tmp/test/testFile/* /home/test/test_tmp_table.csv

本地:

insert overwrite local directory '/home/ming/hive/test/test_tmp_table' 
row format delimited fields terminated by '&' 
select * from test.test_tmp_table;
该命令生成文件为切分文件(eg:000000_0 000001_0 000002_0)

如需合并文件用如下命令 (单个文件中都包含行首信息)
sed -i '1d' 000000_0 #去除首行
cat 000000_0 000001_0 000002_0 > test_tmp_table.csv # 合并文件

通过beeline导出

beeline -n user -p password -u jdbc:hive2://hostname::10000 \
--verbose=true --showHeader=false --outputformat=tsv2 --color=true \
-e "$sql" > ./file/tableName.csv

beeline 参数浅析:

--outputformat=[table/vertical/csv/tsv/dsv/csv2/tsv2] == 指定输出格式
--delimiterForDSV="*"   '&'   前提(--outputformat=dsv) 指定分隔符
--verbose=[true/false]---显示详细错误信息和调试信息
--color=[true/false] ---显示用到的颜色
-showHeader=[true/false]   ---显示查询结果的列名

outputformat 格式

分隔符

table

表格式

vertical

如下所示

csv

',' 逗号(元素包含引号)

tsv

'\t' 制表符(元素包含逗号)

dsv

默认‘|’ 竖线分割,可通过delimiterForDSV指定分隔符

csv2

',' 逗号(不含引号)

tsv2

'\t' 制表符(不含引号)

猜你喜欢

转载自blog.csdn.net/qq_24256877/article/details/106496306