问题标签 [impyla]
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.
python - 大数据的 Impala 中值计算
我可以访问任何给定月份的数亿行数据。3个特征:字符串表示日期,字符串表示类型,值表示金额。
可以访问 python 和 impala(SQL),计算每个月每种类型的数百万行中位数的最佳方法是什么?
如果我使用简单的 group by :日期部分的类型和子字符串来获取月份,例如 substring(date,1,4) 并使用 APPX_MEDIAN 函数作为中位数,我最终会耗尽 Impala 查询的内存。
如果我尝试将原始数据以 CSV 格式(例如使用 DBeaver),它会非常大 - GB 大小,太大而无法放入我可以访问的 VM 的内存中,如果我尝试推送它,它将保存 CSV进入 python pandas 数据框。
我不熟悉处理大数据的模式,因此非常感谢任何提示。由于数据的庞大,我正在努力执行简单的计算。
python-3.6 - Impala 查询不以异步方式执行
基本上,有一个小的 aiohttp 应用程序,它接收 Impala 查询列表,然后向它们发送 Impala。然而,有些查询可能需要很长时间才能完成,因此决定以异步/并行方式进行。得到了一个线程工作的解决方案,但很想看看是否有可能只使用 asyncio/tornado 来达到相同的速度。
我的代码如下:
发生的情况是,一旦它运行,我可以在标准输出中看到“执行查询:查询”消息,我假设它们都被触发并正在执行,但是,它需要 2(或更多)时间作为带有线程的版本。我是把整个异步概念弄错了,还是在方法的某个地方犯了一些愚蠢的错误?
python - Impyla 从 Flask 插入 SQL:语法错误(标识符绑定)
最近我设置了一个 Flask POST 端点,通过 Impyla 模块将数据写入 Impala DB。
环境:CentOS 上的 Python 3.6.5。
Impala 版本:impalad 版本 2.6.0-cdh5.8.0
api.py:
请求.py:
我运行了烧瓶 api,python api.py
然后使用python req.py
.
烧瓶服务器给出了这个错误:
这个错误有点烦人:
我尝试直接在 impala-shell 中插入 sql 命令,它可以工作。
当 page_url 是唯一的参数时,它也可以正常工作。
那么这是某种条件字符转义问题吗?我设法通过使用一些正则表达式(取消注释第 27 - 28 行)调整 url 来绕过这个问题。但这真的很烦人,我不想因此而清理我的数据。
当我检查其他人的试验时,人们认为为每个插入值添加一对引号会起作用。但是,在使用字符串格式时如何做到这一点,并且必须在之前发生cursor.execute(sql, values)
?
python-3.x - 使用带有 concat(to_date) 的时间戳字段是在 Impala 中查询前一天的最有效方法吗?
我正在使用 python 库 Impyla 在 python 脚本中使用 Impala 从 HDFS 查询数据。具体数据是代理数据,并且有很多。我有一个每天运行的脚本来提取前一天并运行统计信息。目前我正在使用devicereceipttime
该查询的字段,该字段存储为时间戳。
这个查询需要一点时间,如果可能的话想加快速度。从下面的给定字段中,我的查询是最有效的吗?
python - 如何使用 Impyla 和 Kerberos 连接到 Apache Hadoop
首先,我还阅读了这个问题(因为它似乎很相似)。
我的问题是我还尝试连接到现在由 Kerberos 保护的 Apache Hadoop 系统。我使用 impyla 模块来实现这一点。在 Hadoop 系统上安装 Kerberos 之前,它运行良好。现在我在互联网上尝试了不同的解决方案,但似乎没有任何效果,但我不得不承认我以前从未使用过 Kerberos。
这是我使用的代码:
(主机和端口作为变量传递)
目前的错误是:“没有名为 thrift_sasl 的模块”
在该错误消息上使用谷歌并不会让我找到有用的东西,很糟糕。有人说需要安装“pyKerberos”模块,但我不确定这是否能解决问题。
有什么我忘记了吗?我也有 Kerberos 主体和密码,并使用“MIT Kerberos Ticket Manager”管理它但也许我还必须以某种方式在代码中提供信息?
希望有人可以帮助我,因为我很困在这里。:-)
python - 使用 Python 连接 Impala 数据库(thriftpy 错误)
我要做的是非常基本的:使用 Python 连接到 Impala 数据库:
我正在使用 Impyla 包来做到这一点。我收到了这个错误:
还尝试了 Ibis 包,但由于相同的 thriftpy 相关错误而失败。
在使用 Dbeaver 的 Windows 中,我可以使用官方 Cloudera JDBC 连接器连接到数据库。我的问题是:
- 应该在我的连接代码中将我的 JDBC 连接器作为参数传递吗?我进行了一些搜索,但找不到指向这个方向的东西。
- 我应该尝试 Ibis 和 Impyla 套餐以外的其他方式吗?在使用它们时,我遇到了很多与版本相关的问题和依赖关系。如果是,您会推荐什么替代方案?
谢谢!
python - python - 无法连接到启用 TLS1.2 的 HiveServer2
我有带 SSL(仅启用最低 TLS1.2)和 LDAP 的 HiveServer2,没有启用 kerberos。hive.server2.transport.mode = 二进制。直线连接可以正常工作,例如:
beeline -u jdbc:hive2://domain:10000/default\;ssl=true\;sslTrustStore=/home/user/query.jks\;trustStorePassword=blah -n user -p pass -e "SELECT * FROM table LIMIT 3"
正如预期的那样,通过直线未传递正确的信任库详细信息或错误的 ldap 凭据意味着连接不起作用。
我想使用 python 库连接到 HiveServer2(特别是这个带有 TLS1.2 的 Hive 设置)。
我查看了几个库,如 impyla、pyhive、pyhs2、sqlalchemy,但没有一个对我有用。我看到其他人提出的几个问题:
- https://community.cloudera.com/t5/Batch-SQL-Apache-Hive/Impyla-TLS-SSL-issues-with-newer-versions-of-SSL/td-p/65136
- https://github.com/cloudera/impyla/issues/293
- https://github.com/dropbox/PyHive/issues/203
- https://github.com/cloudera/impyla/issues/240
- https://github.com/dropbox/PyHive/issues/143
网上有很多没有 TLS1.2 保护的 HiveServer2 实例的连接示例。
`>>> 从 impala.dbapi 导入连接
conn = connect(host='domain', port=10000, use_ssl=True, auth_mechanism='LDAP', user='user', password='pass', ca_cert='/home/user/query.pem') Traceback (最近一次调用最后):文件“”,第 1 行,在文件“/usr/local/lib/python2.7/site-packages/impala/dbapi.py”中,第 147 行,在连接 auth_mechanism=auth_mechanism)文件中“ /usr/local/lib/python2.7/site-packages/impala/hiveserver2.py”,第 658 行,在连接 transport.open() 文件“/usr/local/lib/python2.7/site-packages/thrift_sasl /初始化.py”,第 68 行,打开 self._trans.open() 文件“/usr/local/lib64/python2.7/site-packages/thrift/transport/TSSLSocket.py”,第 118 行,打开 message=message )thrift.transport.TTransport.TTransportException:无法连接到域:10000:[SSL:WRONG_VERSION_NUMBER]版本号错误(_ssl.c:726)`
hive - 为什么 impyla 库 HiveServer2Cursor 会关闭配置单元会话?
我正在使用impyla包使用 impyla 包的 SQLAlchemy 支持从 python 运行一系列使用 Hive on Spark 的查询。SQLAlchemy 自动为每个执行的 sql 语句创建和关闭一个 dbapi 游标。因为 impyla HiveServer2Cursor实现关闭了底层 Hive 会话,所以每个 sql 语句最终都作为一个单独的 Spark 作业运行。我想避免为每个 sql 语句启动一个新的 Spark 作业并使用 SQLAlchemy 而不是原始 dbapi 接口的开销。
重用 dbapi 游标确实有效,但我还是更喜欢使用 SQLAlchemy 引擎及其连接池和自动游标管理功能。
我想知道 impyla 是否有充分的理由使用每个游标打开和关闭 Hive 会话,而不是在连接关闭时关闭 Hive 会话。