无法通过R连接cassandra [英] Unable to connect cassandra through R

查看:618
本文介绍了无法通过R连接cassandra的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想遵循 http://www.datastax.com/dev/blog/big-analytics-with-r-cassandra-and-hive 将R连接到Cassandra。以下是我的代码:

I am trying to follow an example given on "http://www.datastax.com/dev/blog/big-analytics-with-r-cassandra-and-hive" to connect R with Cassandra. Following is my code:

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中运行上面的代码时,我得到以下错误:

When I run above code in R, I get following error:

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服务器窗口中,对于上述代码获取以下错误:

On the Cassandra server window get the following error for the above code:

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,但是错误是一样的。

I tried to change port from 9042 to 9160 then request won't reach server in that case. I also tried to increase the size of thrift_framed_transport_size_in_mb from 15 to 500 but the error is same.

Cassandra运行良好,数据库通过devcenter轻松连接/更新。

The Cassandra is otherwise running fine and database is connected/updated easily through "devcenter".

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


推荐答案

最后,我能够通过R.连接到cassandra。我遵循以下步骤:

Finally I was able to connect to cassandra through R. I followed the following steps:


  1. 我更新了我的java 7和R到最新版本。

  2. 然后,我重新安装了RJDBC,rJava,DBI

  3. 然后,我使用下面的代码,并成功连接:

  1. I updated my java 7 and R to the latest version.
  2. Then, I reinstalled RJDBC, rJava, DBI
  3. Then, I used the following code, and successfully got connected:

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连接cassandra的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆