RCassandra尝试存储" iris"数据集

时间:2014-12-18 13:35:34

标签: sql r cassandra database nosql

我是Apache Cassandra的新手。我安装了R扩展名RCassandra并创建了下表:

CREATE TABLE iris (
    id varchar, 
    "Sepal.Length" double, 
    "Sepal.Width" double, 
    "Petal.Length" double, 
    "Petal.Width" double, 
    Species text, 
    PRIMARY KEY(id)
);

成功连接和键空间选择后,我尝试以下操作:

> RC.write.table(c,'iris',iris)

iris数据集具有以下形式:

> iris
     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
2            4.9         3.0          1.4         0.2     setosa
3            4.7         3.2          1.3         0.2     setosa
4            4.6         3.1          1.5         0.2     setosa
...

但是我收到以下错误:

Error in RC.write.table(c, "iris", iris) : 
    Cassandra exception: Not enough bytes to read value of component 0

也许id字段很麻烦,所以我通过在数据框中添加id列来创建以下数据集:

iris2 = data.frame(id=row.names(iris),iris)

iris2
     id Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1     1          5.1         3.5          1.4         0.2     setosa
2     2          4.9         3.0          1.4         0.2     setosa
3     3          4.7         3.2          1.3         0.2     setosa
4     4          4.6         3.1          1.5         0.2     setosa
...

但我仍然得到同样的错误:

> RC.write.table(c,'iris',iris2)
Error in RC.write.table(c, "iris", iris2) : 
  Cassandra exception: Not enough bytes to read value of component 0

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

您是否正在使用CQLSH在Cassandra中创建列族(“table”)?我自己也遇到了同样的问题。然后切换到使用cassandra-cli并创建列族this way,并且它有效。

很可能RCassandra使用下面的cli,并且因为在CQLSH中创建的CF在cassandra-cli中不可见,所以它看不到CQL表。