RImpala:大数据时查询失败

RImpala: Query Failed When Larger Data

check1<-rimpala.query("select * from sum2")
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
  java.sql.SQLException: Method not supported

dim(sum2) 是 49501 行和 18 列。

check1<-rimpala.query("select *from sum3")

dim(sum3) 是 102 行和 6 列。

它适用于较小的样本量。

抱歉,我无法重现此示例。有人遇到过更大数据量的相同问题吗?有解决这个问题的想法吗?谢谢

elsewhere on Whosebug 所述,RImpala 未实现 executeUpdate,因此不能 运行 任何修改状态的查询。我怀疑您遇到错误不是因为 运行 宁一个更大的 SELECT 查询,而是因为您试图插入、更新或删除一些数据。

如果您想使用 R 中的 Impala,我建议您使用 dplyrimpaladb

RImpala (v0.1.6) 版本已更新,支持使用 executeUpdate 执行 DDL 查询。

最新版本包含以下修复/补充:

  1. 支持 DDL 查询执行。
  2. 查询函数中的 fetchSize 参数,用于说明从 Impala.
  3. 读取的一次往返中可以检索的记录数
  4. 修复了返回 NULL 值时查询失败的问题。
  5. 与 CDH 的兼容性 5.x.x

您可以 运行 使用查询函数进行 DDL 查询,如下所示:

rimpala.query(Q="drop table sample_table",isDDL="true")

您也可以在查询函数中指定fetchSize,以帮助高效读取大数据。

rimpala.query(Q="select * from sample_table",fetchSize="10000")

请在 Cran 中查找最新版本:http://cran.r-project.org/web/packages/RImpala/index.html

源代码:https://github.com/Mu-Sigma/RImpala

我和RImpala包有同样的问题,推荐使用RJDBC包:

library(RJDBC)
drv <- JDBC(driverClass = "org.apache.hive.jdbc.HiveDriver",
          classPath = list.files("path_to_jars",pattern="jar$",full.names=T),
          identifier.quote="`")
conn <- dbConnect(drv, "jdbc:hive2://localhost:21050/;auth=noSasl")
check1 <- dbGetQuery(conn, "select *from sum3")

我使用了这些 jar 文件,一切都按预期工作: https://downloads.cloudera.com/impala-jdbc/impala-jdbc-0.5-2.zip

有关更多信息和速度比较,请查看此博客 post: http://datascience.la/r-and-impala-its-better-to-kiss-than-using-java/