Python Hive Client pyhs2:如何从select语句返回结果?

时间:2014-11-27 10:46:20

标签: python hive

以下是我的代码:

 import pyhs2

 with pyhs2.connect(host='localhost',
               port=10000,
               authMechanism="PLAIN",
               user='biuser',
               password='biuser',
               database='default') as conn:
    with conn.cursor() as cur:

        #Execute query
        cur.execute("select * from some_table")
        print "executed"
        #Fetch table results
        for i in cur.fetch():
            print i

上面的代码在打印“执行”后继续运行,看不到尽头!它应该花这么多时间吗?其他执行操作(如获取各种数据库名称和获取所有表名称)不会花费太多时间。如何在这里捕获select语句的结果?

2 个答案:

答案 0 :(得分:1)

这对你有用;用以下代码替换你的for循环:

while cur.hasMoreRows:
    print cur.fetchone()

答案 1 :(得分:0)

如果您只想从蜂巢中获取数据,您可以尝试这样的事情:

hive -e 'select * from table' | sed 's/yourdelimiter/,/g' > output.csv

您的分隔符取决于您的设置,例如,您可以尝试使用[\t][\01]

如果要通过python脚本运行它,可以将重定向更改为指向它:

hive -e 'select * from table' | sed 's/yourdelimiter/,/g' > myscript.py

它不是最优雅的解决方案,但它可以胜任。