gpt4 book ai didi

java - 使用 Astyanax 突变批处理将 Map 插入 Cassandra CQL3 列族

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:51 26 4
gpt4 key购买 nike

我有一个具有以下结构的 Cassandra CQL3 列系列

CREATE TABLE mytable(
A text,
B text,
C text,
mymap map<text,text>,
D text,
PRIMARY KEY (A,B,C)
);

我正在尝试使用 Astyanax 向其中插入一堆数据。

我正在使用的Cassandra版本是1.2,所以我无法使用BATCH插入。

我知道我可以使用准备好的语句在 for 循环中运行 CQL3 命令。

我想知道是否可以使用 Astyanax 突变批处理将数据插入到上述列族中?我意识到这将利用 Astyanax Thrift 接口(interface)插入 CQL3 列族,但为了高性能写入,这是一个可行的选择吗?

我查看了 cassandra-cli 中列族的结构,它看起来像这样

ColumnFamily: mytable
Key Validation Class: org.apache.cassandra.db.marshal.UTF8Type
Default column value validator: org.apache.cassandra.db.marshal.BytesType
Cells sorted by: org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.ColumnToCollectionType(6974656d73:org.apache.cassandra.db.marshal.MapType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)))

虽然我可以通过在各个字段上使用 @Component 创建 POJO 将数据插入到其他列(即 A、B、C、D)中,但我不确定如何处理 map 插入,即插入到 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;

我到底应该如何修改上面的代码,以便我也可以插入 map 值?

最佳答案

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

关于java - 使用 Astyanax 突变批处理将 Map 插入 Cassandra CQL3 列族,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21704289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com