python—与rjdbc相比,pyhive读取大型配置单元表的性能较慢

83qze16e  于 2021-06-24  发布在  Hive
关注(0)|答案(0)|浏览(246)

我试图用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中设置multiple cursor.arraysize,但这并没有提高性能,而且我注意到当我设置arraysize大于10000时,hive会忽略它并设置10000。默认值为1000。
在python中读取配置单元表时,如何提高性能?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题