问题标签 [pyhive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
71 浏览

hive - 如何让 Dataproc 将 Python-Hive 连接检测为 Yarn Job?

我启动了一个 Dataproc 集群并在其上提供 Hive。我使用 Pyhive 或 PyODBC 从任何机器远程连接到 Hive 并执行操作。这不仅仅是一个查询。间歇性查询可能是一个很长的会话。(查询本身有问题;将单独询问。)

即使在单个活动查询期间,该操作也不会在仪表板上显示为“作业”(我猜是 Yarn)。相反,当我通过 Pyspark“提交”任务时,它们显示为“作业”。

除了缺乏任务可见性之外,我还怀疑,如果没有 Job,集群可能无法可靠地检测到 Python 客户端“连接”到它,因此集群的自动删除可能会过早启动。

有没有办法“注册”一个作业来陪伴我的 Python 会话,并在我选择的时间取消/删除作业?就我而言,这是一项“虚拟”、“名义”的工作,什么都不做。

或者也许有更合适的方法让 Yarn 检测我的 Python 客户端的连接并为其创建工作?

谢谢。

0 投票
0 回答
84 浏览

hive - 连接到 Dataproc 上的 Hive 的 PyHive 出现 VPC_SERVICE_CONTROLS PERMISSION_DENIED NO_MATCHING_ACCESS_LEVEL 错误

pyhive用来连接到 GCP Dataproc 上的 Hive。查询会间歇性地成功和失败。这是问题之一。它发生在一个

客户端得到

服务器端日志包含很多

我从 VPN 后面的 Mac 笔记本电脑连接。

sasl3==0.2.11

节俭==0.13.0

节俭-sasl==0.4.2

pyhive==0.6.3

任何指针如何解决这个问题?似乎是服务器端权限设置?谢谢!!

0 投票
0 回答
62 浏览

python - 如何从 Hadoop 数据库中将非 ACSII 字符读入 jupyterhub

我想读取具有 ACSII 字符以外的字符的数据(来自 Hadoop 数据库)。我正在尝试使用 .py 文件读取数据。我用过

指定编码。

我使用下面的查询来提取数据。

我收到了错误消息。错误消息:“'utf-8' 编解码器无法解码位置 13 中的字节 0x96:无效起始字节”。在调查错误消息时,我知道它由于 ASCII 字符以外的特殊字符而引发错误消息。从其中一列粘贴下面的特殊字符。

在此处输入图像描述

附加完整的回溯(错误消息)。

在此处输入图像描述

请帮我解决问题。提前致谢:)。

0 投票
1 回答
331 浏览

python - 如何从 Python 访问在 EMR 集群中创建的 Hive

我的 hive 表位于 EMR 集群中。我创建了 SSH 隧道:

我可以通过 HUE 从 http://localhost:8888/ 创建和访问配置单元表

现在,我需要从 Python 访问配置单元表,并且代码从我的本地机器执行。

我的代码:

我得到的错误:

如果我修改代码:

我得到的错误是:

我已遵循如何通过 Python 访问 Hive中提到的所有代码?. 但没有运气

让我知道是否可以访问在 EMR 集群中创建的 Hive。谢谢你。

0 投票
1 回答
540 浏览

python - 无法在 MAC 上安装 sasl

为了从 python 连接到 Hive 数据仓库。使用 pyhive 需要 sasl - ModuleNotFoundError: No module named 'sasl'

安装 sasl 失败并出现以下错误

Python 3.9.4 安装了 gcc、libsasl2

MACOS 莫哈韦 v 10.14

pip3 安装 sasl

0 投票
0 回答
46 浏览

sql - 使用 SQL Alchemy 会话注册用户定义函数

我正在使用 sql alchemy 会话在 Azure Databricks 中的数据库上运行 SQL 查询。我的查询包含一个用户定义的函数,但是当我运行查询时它返回

infoMessages=["*org.apache.hive.service.cli.HiveSQLException:错误运行查询:org.apache.spark.sql.AnalysisException:未定义函数:my_method

下面的例子

使用 pyspark,我只需将 udf 注册到 spark 对象就可以轻松做到这一点

这是否可以对 SQL Alchemy 连接执行类似的操作,以便可以执行具有用户定义函数的查询?

0 投票
1 回答
99 浏览

hive - PyHive 在异步模式下运行时无法从 HiveServer2 获取日志

PyHive 在异步模式下运行 Hive 查询时遇到了一个奇怪的问题。在内部,PyHive 使用 Thrift 客户端来执行查询和获取日志(以及执行状态)。我无法获取 Hive 查询的日志(map/reduce 任务等)。cursor.fetch_logs()返回一个空的数据结构

这是代码片段

游标能够正确获取 operationState 但无法获取日志。HiveServer2 端有什么需要配置的吗?

提前致谢

0 投票
0 回答
156 浏览

python - SQLAlchemy PyHive 限制查询结果大小(以 MB 为单位)

我正在使用 PyHive 和 SQLAlchemy DB-API(异步)。如果我执行,我的 Hive 表有数百万条记录:

它在内存中加载数百万条记录。有没有办法将查询结果的大小限制为一定的大小,比如 5 MB?

我丢弃了超过 5 MB 的所有结果。数百万条记录可能是 100 MB,但我确实想在我的 Python 代码中加载这么多数据。

例如,如果:

1000 行 = 5 MB 的表,SQLAlchemy 只会返回 1000 行。

对于另一个查询,例如:

在这里,对于 table2,100,000 行 = 5 MB,SQLAlchemy 将返回 100,000 行。

这样我就不会在我的客户端上耗尽内存。示例很简单,但可能存在复杂的连接 SQL,我想根据 MB 数据限制查询结果大小。

有没有办法用 SQLAlchemy 实现它或者需要修改 Hive & Presto 服务器来实现这种行为?

0 投票
0 回答
95 浏览

sqlalchemy - 如何通过 knox 从 apache 超集访问 hive 数据库?

所以在我当前的设置中,我有一个独立节点和一个集群。我已经在节点上安装了 apache superset,并希望通过 apache knox 访问集群的 hiveserver。我知道,superset 使用 pyhive 创建该连接,但我似乎无法在 Internet 上找到任何资源来通过 knox 创建与 hiveserver 的 pyhive 连接。

任何有关 sqlalchemy URI 应该是什么格式的帮助以及任何有用的细节将不胜感激。

谢谢

0 投票
0 回答
93 浏览

python - Pyhive+Pandas:TTransportException:TSocket 在运行查询大量行时读取 0 个字节(>1000)

我的最简单形式的代码如下所示。我正在尝试从 jupyter 笔记本连接到配置单元。当我查询较少数量的行时,我的代码工作正常,说“从表限制 200 中选择 *”,但是当我执行“从表中选择 *”之类的操作时抛出此错误,表大约 180MB,可以轻松加载到内存中。我不确定为什么会这样。任何帮助深表感谢!我查看了其他类似的问题,但它们没有帮助

查询运行良好,我得到较小结果集的结果说 -select * from table limit 200 但是当我查询大量行时出现以下错误。

-------------------------------------------------- ------------------------- TTransportException Traceback(最近一次调用最后一次)在 1 个查询 = """select * from sample_table""" --- -> 2 df_new = hiveconnection(查询)

在 hiveconnection(query) 7 cur = conn.cursor() 8 cur.execute(query) ----> 9 result = cur.fetchall() 10 conn.close() 11

/usr/local/anaconda/lib/python3.7/site-packages/pyhive/common.py in fetchall(self) 134 :py:meth:execute未产生任何结果集或尚未发出调用。135 """ --> 136 返回列表(iter(self.fetchone, None)) 137 138 @property

/usr/local/anaconda/lib/python3.7/site-packages/pyhive/common.py in fetchone(self) 103 104 # 休眠直到我们完成或者我们有一些数据要返回 --> 105 self._fetch_while (lambda: not self._data and self._state != self._STATE_FINISHED) 106 107 if not self._data:

/usr/local/anaconda/lib/python3.7/site-packages/pyhive/common.py in _fetch_while(self, fn) 43 def _fetch_while(self, fn): 44 while fn(): ---> 45 self ._fetch_more() 46 if fn(): 47 time.sleep(self._poll_interval)

/usr/local/anaconda/lib/python3.7/site-packages/pyhive/hive.py in _fetch_more(self) 384 maxRows=self.arraysize, 385) --> 386 response = self._connection.client.FetchResults(请求)387 _check_status(响应)388 架构 = self.description

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/TCLIService.py 在 FetchResults(self, req) 712 """ 713 self.send_FetchResults(req) --> 714 return self.recv_FetchResults() 715 716 def send_FetchResults(自我,请求):

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/TCLIService.py in recv_FetchResults(self) 731 raise x 732 result = FetchResults_result() --> 733 result.read(iprot) 734 iprot.readMessageEnd () 735 如果 result.success 不是无:

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/TCLIService.py in read(self, iprot) 3468 if ftype == TType.STRUCT: 3469 self.success = TFetchResultsResp() -> 3470 self .success.read(iprot) 3471 其他:3472 iprot.skip(ftype)

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/ttypes.py in read(self, iprot) 6581 if ftype == TType.STRUCT: 6582 self.results = TRowSet() -> 6583 self .results.read(iprot) 6584 其他:6585 iprot.skip(ftype)

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/ttypes.py in read(self, iprot) 2865 for _i114 in range(_size110): 2866 _elem115 = TColumn() -> 2867 _elem115.read (iprot) 2868 self.columns.append(_elem115) 2869
iprot.readListEnd()

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/ttypes.py in read(self, iprot) 2727 if ftype == TType.STRUCT: 2728 self.i64Val = TI64Column() -> 2729 self .i64Val.read(iprot) 2730 其他:2731 iprot.skip(ftype)

/usr/local/anaconda/lib/python3.7/site-packages/TCLIService/ttypes.py in read(self, iprot) 2351 (_etype79, _size76) = iprot.readListBegin() 2352 for _i80 in range(_size76): -> 2353 _elem81 = iprot.readI64() 2354 self.values.append(_elem81) 2355
iprot.readListEnd()

/usr/local/anaconda/lib/python3.7/site-packages/thrift/protocol/TBinaryProtocol.py in readI64(self) 220 221 def readI64(self): --> 222 buff = self.trans.readAll(8 ) 223 val, = unpack('!q', buff) 224 返回值

/usr/local/anaconda/lib/python3.7/site-packages/thrift/transport/TTransport.py in readAll(self, sz) 60 have = 0 61 while (have < sz): ---> 62 chunk = self.read(sz - have) 63 chunkLen = len(chunk) 64 have += chunkLen

/usr/local/anaconda/lib/python3.7/site-packages/thrift_sasl/ init .py in read(self, sz) 171 return ret 172 --> 173 self._read_frame() 174 return ret + self.__rbuf。读取(sz - len(ret))175

/usr/local/anaconda/lib/python3.7/site-packages/thrift_sasl/ init .py in _read_frame(self) 188 else: 189 # 如果帧没有编码,直接通过 --> 190 decoded = self ._trans.read(length) 191 self.__rbuf = BufferIO(decoded) 192

/usr/local/anaconda/lib/python3.7/site-packages/thrift/transport/TSocket.py in read(self, sz) 141 if len(buff) == 0: 142 raise TTransportException(type=TTransportException.END_OF_FILE , --> 143 message='TSocket read 0 bytes') 144 return buff 145

TTransportException:TSocket 读取 0 个字节