Python执行hive sql
短信预约 -IT技能 免费直播动态提醒
该python脚本是用于执行hive脚本的,需要设置hive的可执行环境变量,其实质转化为shell下命令 hive -e 'sql语句’ 的方式执行,然后把结果重定向到控制台显示。注:由于该脚本是直接调用shell中的hive命令,所以需要在安装hive的服务器上执行。
使用前置条件:(1)安装hadoop和hive,并启动完hadoop;(2)已配置好hive的环境变量,确保在shell中能正常执行hive。
#!/usr/bin/python
#-*-coding:utf-8 -*-
import subprocess
import traceback
sql = """
# 书写hql脚本
;
"""
cmd = 'hive -e """'+sql.replace('"', "\'")+'"""'
print cmd
try:
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
while True:
buff = p.stdout.readline()
print buff
if buff == '' and p.poll() != None:
break
except Exception,re:
print "message is:%s" %(str(re))
traceback.print_exc();
脚本举例
#!/usr/bin/python
#-*-coding:utf-8 -*-
import subprocess
import traceback
sql = """
select * from app_tianhe_zym_item_reason_dtl_da where order_dt = '2016-01-26' limit 10;
"""
cmd = 'hive -e """'+sql.replace('"', "\'")+'"""'
print cmd
try:
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
while True:
buff = p.stdout.readline()
print buff
if buff == '' and p.poll() != None:
break
except Exception,re:
print "message is:%s" %(str(re))
traceback.print_exc();
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341