python - Beeline 无法在 python 中使用 subprocess.run,永远卡住
问题描述
我正在尝试从 Python 脚本通过直线连接并运行 hql 脚本。我无法使用 subprocess.run 或 subprocess.popen 运行。我可以直接在命令提示符下运行它
beeline_connect=str('"jdbc:hive2://192.168.0.100:10000/serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;transportMode=http;httpPath=cliservice;principal=hive/system1.example.co.in@EXAMPLE.CO.IN"')
#passing params as a list
param_list= ['beeline -u' + beeline_connection,'-hivevar', 'VAR1=val1', '-hivevar', 'VAR2=val2', '-hivevar', 'VAR3=val3', '-hivevar', 'VAR4=val4', '-hivevar', 'VAR5=val5', '-f', '/my/path/filename.hql']
command = subprocess.run(param_list, check=True, stdout=subprocess.PIPE)
output = command.stdout
status = str(output.decode('utf-8'))
print(
'****Its failed****, return code {1} with return count {2} :'.format(command.returncode, status))
if command.returncode > 0:
print('Job failed. Raising exception')
raise Exception('Job ' + job_name + ' failed')
else:
## do something else###
#####i 也尝试使用 shell=True 和 False ,并删除标准输出
它永远卡住了,我联系直线命令的方式有什么问题吗?我尝试了以下串联的许多组合,但没有运气。任何帮助都会非常显着。谢谢
param_list =['beeline', '-u' + beeline_connection...]
param_list =['beeline', '-u', beeline_connection....]
解决方案
如下更改代码行对我有用
param_list= ['beeline', '-u',beeline_connection,'-hivevar', 'VAR1=val1', '-hivevar', 'VAR2=val2', '-hivevar', 'VAR3=val3', '-hivevar', 'VAR4=val4', '-hivevar', 'VAR5=val5', '-f', '/my/path/filename.hql']
推荐阅读
- node.js - 如何将 DynamoDB Streams 对象映射到 Javascript 对象?
- r - 更改格子图例的字体
- java - Spring MVC:在同一网络服务器中的 WAR 之间共享 bean
- php - 登录问题。我正在使用 php 版本 7.2
- python - 如何将 tweepy api 调用转换为异步
- javascript - 在 ListView 中显示 Array 的每一项
- c# - 无法使用标准序列化时如何将 C# 对象传输到 C++
- react-redux - Redux-saga - yield all 不是在 root saga 中调用我所有的 saga
- sql - 在任何其他 SQL 之前先执行子查询重构
- regex - 正则表达式在整数之前提取字符串