Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python配置单元客户端pyhs2:如何从select语句返回结果?_Python_Hive - Fatal编程技术网

Python配置单元客户端pyhs2:如何从select语句返回结果?

Python配置单元客户端pyhs2:如何从select语句返回结果?,python,hive,Python,Hive,下面是我的代码: import pyhs2 with pyhs2.connect(host='localhost', port=10000, authMechanism="PLAIN", user='biuser', password='biuser', database='default') as conn: with conn.c

下面是我的代码:

 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语句的结果?

如果您只想从配置单元中获取数据,也可以尝试以下方法:

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

这不是最优雅的解决方案,但它可以完成这项工作。

这应该适合你;将for循环替换为:

while cur.hasMoreRows:
    print cur.fetchone()

视情况而定。这张桌子有多大?尽量限制你的选择。这是一张很大的桌子。我确实需要表中的所有结果,我想将输出写入csv文件,以便对其进行进一步分析。这就是我运行select*from table命令的原因。这是我现在需要连接到蜂巢的唯一原因。我注意到,即使是一个小的表大小,脚本也会继续运行。它会打印结果吗?不会!它不会打印任何内容,运行select命令时也不会打印。什么类型的查询可以工作?结果如何?如果您在上面的列表中添加限制100,请选择是否有效?它应该相当快。您的表的行/列有多大?我需要通过Python脚本来完成。您可以尝试通过Python脚本进行重定向,但根据内存和表大小,重定向可能不起作用。我遇到了与原始问题相同的问题,这解决了问题。