我必须登录到堡垒Linux主机,然后使用pbrun运行kinit和beeline
,然后将sftp csv文件运行到Windows。
查询示例:
“ SELECT * FROM db.table,其中id> 100”
是否有Python脚本或工具可以自动执行此操作?
答案 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