Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 利用Astyanax突变批将Map插入Cassandra CQL3柱族_Java_Cassandra_Cql3_Astyanax - Fatal编程技术网

Java 利用Astyanax突变批将Map插入Cassandra CQL3柱族

Java 利用Astyanax突变批将Map插入Cassandra CQL3柱族,java,cassandra,cql3,astyanax,Java,Cassandra,Cql3,Astyanax,我有一个Cassandra CQL3柱族,其结构如下 CREATE TABLE mytable( A text, B text, C text, mymap map<text,text>, D text, PRIMARY KEY (A,B,C) ); 虽然我可以通过在各个字段上创建带有@Component的POJO将数据插入其他列(即A、B、C、D),但我不确定如何处理映射插入,即插入mymap列 我创建的示例POJO是 public class TestC

我有一个Cassandra CQL3柱族,其结构如下

CREATE TABLE mytable(
  A text,
  B text,
  C text,
  mymap map<text,text>,
  D text,
  PRIMARY KEY (A,B,C)
);
虽然我可以通过在各个字段上创建带有@Component的POJO将数据插入其他列(即A、B、C、D),但我不确定如何处理映射插入,即插入mymap列

我创建的示例POJO是

public class TestColumn {

  @Component(ordinal = 0)
  String bComponent;

  @Component(ordinal = 1)
  String cComponent;

  @Component(ordinal = 2)
  String columnName;

  public TestColumn() {
  }
}
插入代码如下所示

AnnotatedCompositeSerializer columnSerializer = new  AnnotatedCompositeSerializer(TestColumn.class);
ColumnFamily columnFamily = new ColumnFamily("mytable", StringSerializer.get(), columnSerializer);

final MutationBatch m = keyspace.prepareMutationBatch();

ColumnListMutation columnListMutation = m.withRow(columnFamily, "AVal");

columnListMutation.putColumn(new TestColumn("BVal", "CVal", null),  ByteBufferUtil.EMPTY_BYTE_BUFFER,
                timeToLive);
columnListMutation.putColumn(new ApiAvColumn("BVal", "CVal", "D"), "DVal",
                timeToLive);
m.execute;

我应该如何准确地修改上述代码,以便也可以插入映射值?

我们通过使用DataStax Java驱动程序而不是Astyanax解决了这个问题。

不要对Cassandra 2.0中的批插入抱太大希望。我尝试过类似的情况,但仍然比突变批次慢1000倍。
AnnotatedCompositeSerializer columnSerializer = new  AnnotatedCompositeSerializer(TestColumn.class);
ColumnFamily columnFamily = new ColumnFamily("mytable", StringSerializer.get(), columnSerializer);

final MutationBatch m = keyspace.prepareMutationBatch();

ColumnListMutation columnListMutation = m.withRow(columnFamily, "AVal");

columnListMutation.putColumn(new TestColumn("BVal", "CVal", null),  ByteBufferUtil.EMPTY_BYTE_BUFFER,
                timeToLive);
columnListMutation.putColumn(new ApiAvColumn("BVal", "CVal", "D"), "DVal",
                timeToLive);
m.execute;