如何将hive的执行结果返回给一个变量

在Python中执行Hive SQL时,通常通过os.system执行命令,但无法直接获取到查询结果。使用os.popen(hive_cmd).read()可以获取到执行结果,但返回的是文件描述符形式,需要通过字符串截取获取实际结果。例如,当Hive查询结果为4693624时,实际获取到的字符串为'_c0 4693624 ',需通过k[4:11]截取得到正确结果。此方法常用于预分区操作,如根据count(*)结果将HBase表进行分区。
摘要由CSDN通过智能技术生成

首先可以将hive sql写入python脚本


假如有如下hive sql:

hive_cmd = 'hive -e "select count(*) from hbase.routermac_sort_10;"'

一般在python中按照如下方式执行该hive sql:

os.system(hive_cmd)

但是当我需要在程序中拿到count()的执行结果时,使用os.system()则无能为力,应该使用以下方式:

k = os.popen(hive_cmd).read()  

将hive_cmd的执行结果返回给变量k,k的值此时应该是个字符串。但是这里有个坑,此时的k的值可能并非你想要的结果,比如count(*)的结果是4693624,本来的想法是k应该等于4693624,可是事实并非如此;使用print(len(k))得到的结果是居然是12,按理来说字符串‘4693624’的长度应该是7,怎么会是12呢,然后print k会发现输出为࿱

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值