RImpala:大数据时查询失败

时间:2015-01-29 11:00:39

标签: r impala

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列。

它适用于较小的样本量。

抱歉,我无法重现这个例子。是否有人遇到数据量较大的同样问题?有什么想法解决这个问题?感谢。

3 个答案:

答案 0 :(得分:1)

如上所述elsewhere on StackOverflow,RImpala未实现executeUpdate,因此无法运行任何修改状态的查询。我怀疑你不是通过运行更大的SELECT查询而是因为你试图插入,更新或删除一些数据而发现错误。

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

答案 1 :(得分:0)

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

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

  1. 支持DDL查询执行。
  2. 查询函数中的
  3. fetchSize参数,用于说明从Impala读取的往返行程中可以检索的记录数。
  4. 修复查询失败时返回NULL值。
  5. 与CDH 5.x.x的兼容性
  6. 您可以使用查询功能运行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

答案 2 :(得分:0)

我对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

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