用Impala查询Hive数据,将结果导出为本地文件。
常用参数:
-q / --query=query 命令行执行sql
-f / --query_file 执行查询文件,分号分隔
-d / --database= 指定数据库,不指定使用default,也可以在sql中使用db.table
-B / --delimited 去格式化输出
-o / --output_file 指定输出结果文件
-i / --impalad= 指定连接服务端,格式为 host:port,可以指定localhost
--output_delimiter= 指定分隔符
--print_header 首行打印列名
导出
1. shell中导出
impala-shell -q "select * from tb_base_game_conf" -d cp_data -B --output_delimiter="\t" \
--print_header -o /data3/impala_output/tb_base_game_conf.csv;
2. 通过脚本导出
注意其中的变量,会话要传递变量使用 --var=key=value,sql语句文件中变量使用 ${var : key}来引用。
output.sh
#!/bin/bash
file=$1
DB=$2
tab=$3
output=$4
impala-shell --var=db=${DB} --var=table=${tab} -f ${file} -B --output_delimiter="\t" -o ${output}
output.sql
use ${var:db};
select * from ${var:table}
运行脚本
./output.sh out.sql cp_data tb_base_game_conf /data3/impala_output/tb_base_game_conf.csv