gpt4 book ai didi

sql - 使用Hive ODBC连接器时, Pandas read_sql()不喜欢DISTINCT关键字

转载 作者:行者123 更新时间:2023-12-02 20:34:42 25 4
gpt4 key购买 nike

我正在通过pyodbc连接访问配置单元。它使用Hortonworks Hive ODBC驱动程序。我正在使用pandas将sql结果读入数据框。有些查询有效,有些无效。我不知道为什么。例如,

conn = pyodbc.connect('DSN=HiveConnection;UID=username;PWD=password;', autocommit=TRUE)
df = pd.read_sql("SELECT * FROM myTable AS m WHERE m.file = 'myfile';", con=conn)

返回一切都很好。但是,当我运行这个
df = pd.read_sql("SELECT DISTINCT m.file FROM myTable AS m;", con=conn)

或这个
df = pd.read_sql("SELECT m.file, count(m.file) FROM myTable AS m GROUP BY m.file;", con=conn)

这给了我一个错误。
pyodbc.Error: ('HY000', "[HY000] [Hortonworks][HiveODBC] (35) Error from Hive: error code: '0' error message: 'ExecuteStatement finished with operation state: ERROR_STATE'. (35) (SQLExecDirectW)")

我发现此 https://kb.tableau.com/articles/issue/error-from-hive-executestatement-finished-connecting-to-hadoop-table解决了Tableau中的类似问题。它提到问题很可能与用户权限有关。我认为这不是问题,因为我可以运行某些查询,但不能运行其他查询。任何帮助将非常感激。

最佳答案

select *提取任务不需要MapReduce作业。问题可能是正在查询的集群需要您有权执行MapReduce作业的队列。

尝试将队列设置为您知道有权访问的队列。

对于TEZ任务

pd.read_sql("set tez.queue.name=<your_queue_name>;", con=conn)

对于MapReduce任务
pd.read_sql("set mapreduce.job.queuename=<your_queue_name>;" , con=conn)
pd.read_sql("set mapreduce.job.queue=<your_queue_name>;" , con=conn)

关于sql - 使用Hive ODBC连接器时, Pandas read_sql()不喜欢DISTINCT关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51662319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com