gpt4 book ai didi

java - 使用 Astyanax CQL3 API 批量插入?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:49:58 26 4
gpt4 key购买 nike

我知道我们可以用这样的东西将单条记录插入 Cassandra(下面的例子取自 here):

final String INSERT_STATEMENT = "INSERT INTO employees (empID, deptID, first_name, last_name) VALUES (?, ?, ?, ?);";

result = keyspace
.prepareQuery(CQL3_CF)
.withCql(INSERT_STATEMENT)
.asPreparedStatement()
.withIntegerValue(222)
.withIntegerValue(333)
.withStringValue("Eric")
.withStringValue("Cartman")
.execute();

是否可以使用 Astyanax 的 cql3 API(如 JDBC 的 executeBatch)进行批量插入(针对多条记录)?

注意:使用 Astyanax 的 MutationBatch(基于 Thrift,而不是 CQL)对我来说似乎不是一个选择,因为我遇到了与 this one 相同的问题。 .

最佳答案

使用 Astyanax 实现以下目标:

使用 cqlsh:

cqlsh:TEST_KS> INSERT INTO "MESSAGE_CF" (KEY, "DELETED_RECEIVER", "DELETED_SENDER", "SENDER") 
VALUES ('user-1241324', 'Yes', 'No', 'user@mail.com');
cqlsh:TEST_KS> SELECT * FROM "MESSAGE_CF";
key | DELETED_RECEIVER | DELETED_SENDER | RECEIVER | SENDER
--------------+------------------+----------------+----------+---------------
user-1241324 | Yes | No | null | user@mail.com

使用 Astyanax:

    Keyspace keyspace = Astyanax.getKeyspaceContext();
ColumnFamily<String, String> mail = new ColumnFamily<String, String>(
keyspace.getKeyspaceName(), // CF Name
StringSerializer.get(), // Key Serializer
StringSerializer.get()); // Column Serializer

// You could start looping here to alter what data is being inserted
// or make the method take in parameters and call it multiple times.
String cqlStatement =
"INSERT INTO MESSAGE_CF (KEY, DELETED_RECEIVER, DELETED_SENDER, SENDER) "
+ "VALUES ('user-1281324', 'Yes', 'No', 'user@mail.com');";

// execute the insertion
OperationResult<CqlResult<String, String>> result =
keyspace.prepareQuery(mail).withCql(cqlStatement).execute();

// stop looping

请注意:我无法使用准备好的语句实现此目的,Astyanax 已在其 wiki 中展示(在准备好的 CQL 下)支持准备好的语句,但我使用的是 astyanax-1.56.21 并且缺少 asPreparedStatement() 函数。

此外,为了实现这一点,请不要忘记将您的 AstyanaxContext 设置为使用 CQL3。

 new com.netflix.astyanax.impl.AstyanaxConfigurationImpl()      
.setCqlVersion("3.0.0")) //using CQL3

更新

查看 batch 关键字。批处理加速能力的主要因素是它节省了往返行程。管理 CQL 语句将更加困难,但它确实提高了更新速度。它可以执行 CUD 操作(插入、更新和删除),但不能执行 SELECT。另外,我建议您通读 CQL3 documentation了解 cql 可以做什么。

关于java - 使用 Astyanax CQL3 API 批量插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15070293/

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