如何自动从Hive到Windows桌面提取数据?

时间:2018-09-01 14:45:01

标签: python hive

我必须登录到堡垒Linux主机,然后使用pbrun运行kinit和beeline,然后将sftp csv文件运行到Windows。

查询示例:

“ SELECT * FROM db.table,其中id> 100”

是否有Python脚本或工具可以自动执行此操作?

2 个答案:

答案 0 :(得分:0)

您可以将查询到文件,例如hive_script.sql 并从终端运行他的

hive -f hive_script.sql

答案 1 :(得分:0)

我想发表我的发现。 最困难的部分是弄清楚Expect + pbrun。 因为有两个互动式问题,所以我不得不在第一个问题后停顿一秒钟。

我的expect代码:

#!/usr/bin/expect -f
set timeout 300
set usr [lindex $argv 0];
set pwd [lindex $argv 1];
set query_file [lindex $argv 2];
spawn -noecho pbrun $usr &
expect -re "Password:"
send "$pwd\r"

sleep 1
expect "Enter reason for this privilege access:"
send "test\r"

send "kinit -k -t /opt/Cloudera/keytabs/`whoami`.`hostname -s`.keytab `whoami`/`hostname -f`@YOUR_FQDN_NAME.NET;ssl=true\r"
send "beeline -u 'jdbc:hive2://bigdataplatform-your_dev.net:10000/;principal=hive/bigdataplatform-your_dev.net@YOUR_FQDN_NAME.NET;ssl=true' --outputformat=csv2 --verbose=false  --fastConnect=true   --silent=true -f $query_file;\r"

expect "*]$\ " {send "exit\r"}
expect eof

查询:

select * from gfocnnsg_work.pytest LIMIT  1000000;

其余的是Python和paramiko。 我创建了传输对象,执行了期望脚本,并将标准输出保存在Windows操作系统上。

数据访问路径:

Windows desktop->
               SSH->
                  Linux login->
                      pbrun service login-> 
                                          kinit 
                                          beeline-> 
                                                  SQL-> 
                                                      save echo on Windows  

以下是Python脚本,其中包含详细信息:hivehoney