我有一个使用pyhs2查询HiveServer2的python脚本,如下所示:import pyhs2;
conn = pyhs2.connect(host=localhost,
port=10000,
user='user',
password='password',
database='default');
cur = conn.cursor();
cur.execute("SELECT name,data,number,time FROM table WHERE date = '2014-01-01' AND number in (1,5,6,22) ORDER BY name,time ASC");
line = cur.fetchone();
while line is not None:
.
.
.
line = cur.fetchone();
我也尝试过使用fetchall()而不是fetchone(),但这似乎永远挂起了。在
我的查询运行正常,返回大约2.7亿行。为了进行测试,我将Hive的输出转储到一个以制表符分隔的平面文件中,并根据该文件编写python脚本的内容,因此我不必每次运行都等待查询完成。我读取平面文件的脚本将在大约20分钟内完成。让我困惑的是,当我直接查询配置单元时,我看不到相同的性能。事实上,完成处理大约需要5倍的时间。我对Hive和python很陌生,所以可能我犯了一些愚蠢的错误,但是我在网上看到的例子显示了这样的设置。我只想遍历我的Hive返回,一次获取一行,就像我使用平面文件一样。有什么建议吗?在
另外,我发现这个问题听起来很相似:
但这最终成为了一个SQLite问题,我无法控制我的蜂箱设置。在