【发布时间】:2014-12-08 18:09:49
【问题描述】:
使用 hive 或 beeline 客户端,执行此语句没有问题:
hive -e "LOAD DATA LOCAL INPATH '/tmp/tmpBKe_Mc' INTO TABLE unit_test_hs2"
文件中的数据成功加载到hive中。
但是,在同一台机器上使用pyhs2时,找不到文件:
import pyhs2
conn_str = {'authMechanism':'NOSASL', 'host':'azus',}
conn = pyhs2.connect(conn_str)
with conn.cursor() as cur:
cur.execute("LOAD DATA LOCAL INPATH '/tmp/tmpBKe_Mc' INTO TABLE unit_test_hs2")
抛出异常:
Traceback (most recent call last):
File "data_access/hs2.py", line 38, in write
cur.execute("LOAD DATA LOCAL INPATH '%s' INTO TABLE %s" % (csv_file.name, table_name))
File "/edge/1/anaconda/lib/python2.7/site-packages/pyhs2/cursor.py", line 63, in execute
raise Pyhs2Exception(res.status.errorCode, res.status.errorMessage)
pyhs2.error.Pyhs2Exception: "Error while compiling statement: FAILED: SemanticException Line 1:23 Invalid path ''/tmp/tmpBKe_Mc'': No files matching path file:/tmp/tmpBKe_Mc"
我已经看到有关此问题的类似问题,通常的答案是查询在没有存储本地文件“/tmp/tmpBKe_Mc”的不同服务器上运行。但是,如果是这种情况,为什么直接从 CLI 运行命令会起作用,但使用 pyhs2 不起作用?
(第二个问题:我如何显示哪个服务器正在尝试处理查询?我试过 cur.execute("set"),它返回所有配置参数,但是当 grepping for "host" 时返回的参数不' t 似乎包含一个真实的主机名。)
谢谢!
【问题讨论】:
-
嗨,John,我可以知道这个问题是如何解决的吗?
-
抱歉 - 我们不再使用 Hive,所以我无法测试。