问题标签 [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.
hive - 如何让 Dataproc 将 Python-Hive 连接检测为 Yarn Job?
我启动了一个 Dataproc 集群并在其上提供 Hive。我使用 Pyhive 或 PyODBC 从任何机器远程连接到 Hive 并执行操作。这不仅仅是一个查询。间歇性查询可能是一个很长的会话。(查询本身有问题;将单独询问。)
即使在单个活动查询期间,该操作也不会在仪表板上显示为“作业”(我猜是 Yarn)。相反,当我通过 Pyspark“提交”任务时,它们显示为“作业”。
除了缺乏任务可见性之外,我还怀疑,如果没有 Job,集群可能无法可靠地检测到 Python 客户端“连接”到它,因此集群的自动删除可能会过早启动。
有没有办法“注册”一个作业来陪伴我的 Python 会话,并在我选择的时间取消/删除作业?就我而言,这是一项“虚拟”、“名义”的工作,什么都不做。
或者也许有更合适的方法让 Yarn 检测我的 Python 客户端的连接并为其创建工作?
谢谢。
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
任何指针如何解决这个问题?似乎是服务器端权限设置?谢谢!!
python - 如何从 Python 访问在 EMR 集群中创建的 Hive
我的 hive 表位于 EMR 集群中。我创建了 SSH 隧道:
我可以通过 HUE 从 http://localhost:8888/ 创建和访问配置单元表
现在,我需要从 Python 访问配置单元表,并且代码从我的本地机器执行。
我的代码:
我得到的错误:
如果我修改代码:
我得到的错误是:
我已遵循如何通过 Python 访问 Hive中提到的所有代码?. 但没有运气
让我知道是否可以访问在 EMR 集群中创建的 Hive。谢谢你。
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
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 连接执行类似的操作,以便可以执行具有用户定义函数的查询?
hive - PyHive 在异步模式下运行时无法从 HiveServer2 获取日志
PyHive 在异步模式下运行 Hive 查询时遇到了一个奇怪的问题。在内部,PyHive 使用 Thrift 客户端来执行查询和获取日志(以及执行状态)。我无法获取 Hive 查询的日志(map/reduce 任务等)。cursor.fetch_logs()
返回一个空的数据结构
这是代码片段
游标能够正确获取 operationState 但无法获取日志。HiveServer2 端有什么需要配置的吗?
提前致谢
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 服务器来实现这种行为?
sqlalchemy - 如何通过 knox 从 apache 超集访问 hive 数据库?
所以在我当前的设置中,我有一个独立节点和一个集群。我已经在节点上安装了 apache superset,并希望通过 apache knox 访问集群的 hiveserver。我知道,superset 使用 pyhive 创建该连接,但我似乎无法在 Internet 上找到任何资源来通过 knox 创建与 hiveserver 的 pyhive 连接。
任何有关 sqlalchemy URI 应该是什么格式的帮助以及任何有用的细节将不胜感激。
谢谢
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 个字节