我正在尝试使用 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 表的性能?