我是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
关于如何解决这个问题的任何想法?
答案 0 :(得分:0)
您是否正在使用CQLSH在Cassandra中创建列族(“table”)?我自己也遇到了同样的问题。然后切换到使用cassandra-cli并创建列族this way,并且它有效。
很可能RCassandra使用下面的cli,并且因为在CQLSH中创建的CF在cassandra-cli中不可见,所以它看不到CQL表。