以下是我的代码:
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语句的结果?
答案 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
它不是最优雅的解决方案,但它可以胜任。