r - 无法通过R连接 Cassandra

标签 r cassandra rjdbc

我正在尝试按照“http://www.datastax.com/dev/blog/big-analytics-with-r-cassandra-and-hive”上给出的示例将 R 与 Cassandra 连接起来。以下是我的代码:

library(RJDBC)

    #Load in the Cassandra-JDBC diver
    cassdrv <- JDBC("org.apache.cassandra.cql.jdbc.CassandraDriver", list.files("D:/cassandra/lib",pattern="jar$",full.names=T))

    #Connect to Cassandra node and Keyspace
    casscon <- dbConnect(cassdrv, "jdbc:cassandra://127.0.0.1:9042/demodb")

当我在 R 中运行上述代码时,出现以下错误:

Error in .jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1],  : 
  java.sql.SQLNonTransientConnectionException: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2113929216)!

在 Cassandra 服务器窗口中,上述代码出现以下错误:

ERROR 14:41:26,671 Unexpected exception during request
java.lang.ArrayIndexOutOfBoundsException: 34
        at org.apache.cassandra.transport.Message$Type.fromOpcode(Message.java:1
06)
        at org.apache.cassandra.transport.Frame$Decoder.decode(Frame.java:168)
        at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDeco
der.java:425)
        at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(Fram
eDecoder.java:303)
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:26
8)
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:25
5)
        at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
        at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(Abstract
NioWorker.java:109)
        at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNi
oSelector.java:312)
        at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioW
orker.java:90)
        at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

我尝试将端口从 9042 更改为 9160,然后在这种情况下请求将无法到达服务器。 我还尝试将 thrift_framed_transport_size_in_mb 的大小从 15 增加到 500,但错误是一样的。

Cassandra 在其他方面运行良好,并且可以通过“devcenter”轻松连接/更新数据库。

R version: R-3.1.0,
Cassandra version: 2.0.8,
Operating System: Windows,
XP Firewall: off

最佳答案

最后我能够通过 R 连接到 cassandra。我按照以下步骤操作:

  1. 我将我的 java 7 和 R 更新到了最新版本。
  2. 然后,我重新安装了 RJDBC、rJava、DBI
  3. 然后,我使用下面的代码,成功连接上了:

    library(RJDBC)
    
    drv <- JDBC("org.apache.cassandra.cql.jdbc.CassandraDriver", list.files("D:/cassandra/lib/",pattern="jar$",full.names=T))
    
    .jaddClassPath("D:/mysql-connector-java-3.1.14/cassandra-clientutil-1.0.2.jar")
    
    conn <- dbConnect(drv, "jdbc:cassandra://127.0.0.1:9160/demodb")
    
    res <- dbGetQuery(conn, "select * from emp")
    
    
    
    # print values
    res
    

关于r - 无法通过R连接 Cassandra ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24272452/

相关文章:

r - 定时大块?

r - 如何按组为所有数据添加特定值?

r - GGpairs,相关值未对齐

ubuntu - 在单个 ubuntu 服务器上设置 cassandra 多节点集群

R:使用 RJDBC 将 csv 文件插入数据库

r - R 中的 Facet_Wrap 标签

cassandra - 如何使用 Hector/Cassandra 设置计数器?

java - 发现来自另一个数据中心的节点

带有parallelmap的rjdbc并行查询

R DBI SQL Server : dbWriteTable truncates rows/field. 类型参数不起作用