python - 与 RJDBC 相比,使用 pyhive 读取大型 Hive 表的性能较慢
问题描述
我正在尝试使用 pyhive 从 python 中的 Hive 读取一个大表,该表有大约 1600 万行。但这大约需要33 分钟。当我用 RJDBC 读取 R 中的同一张表时,读取整个表大约需要13 分钟。这是我的代码
library(RJDBC)
driver <- try(JDBC("org.apache.hive.jdbc.HiveDriver", paste0(jar_dir, '/hive-jdbc-3.1.2-standalone.jar')))
con_hive <- RJDBC::dbConnect(driver, "jdbc:hive2://hive_ip:10000/dev_perm")
query <- "SELECT * FROM mi table WHERE periodo='2020-02-01'"
replica_data <- dbGetQuery(con_hive, query)
在python中我的代码是
import pyhive
conn = hive.Connection(host=ip_hive)
curs = conn.cursor()
cursor.execute("SELECT * FROM mi table WHERE periodo='2020-02-01'")
results = pd.DataFrame(cursor.fetchall(), columns=[desc[0] for desc in cursor.description])
我已经尝试在python中设置多个cursor.arraysize,但它并没有提高性能,而且我注意到当我设置一个大于10000的arraysize时,配置单元会忽略它并设置10000。默认值为1000。
我可以做些什么来提高我在 python 中读取 Hive 表的性能?
解决方案
推荐阅读
- javascript - Angular ng-repeat 表:来自对象的动态列
- angular - Angular Cli 错误:位置 1008 的 JSON 中的意外标记]
- java - 如何在运行时从数据库动态加载身份提供者 (IdP) Sprint Security SAML
- python - IntelliJ 无法导入模块,但从命令行可以正常工作
- r - 更新输入函数包
- javascript - 移动响应式下拉导航栏适用于小宽度浏览器,但不适用于我的手机
- regex - 不匹配某些字符串的正则表达式
- json - 替换 PostgreSQL 9.6 中的第一个和最后一个 JSON 字符
- javascript - 在元素中包裹 iframe
- amazon-web-services - 亚马逊网络服务上 Hyperledger Fabric 的最佳系统