数据导出方式有以下几种
- 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' 制表符(不含引号) |