- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我知道我们可以用这样的东西将单条记录插入 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/
我是astyanax的新手,尝试了一些示例程序并遇到此错误。这是一个简单的编写,看起来像是在做一些基本错误的事情。不使用复合键。 Caused by: InvalidRequestException(
尝试编写一个查询,该查询将使用 astyanax 客户端和 RowSliceQuery 对列族中的所有行进行分页。 keyspace.prepareQuery(COLUMN_FAMILY).getKe
我正在尝试使用 Astyanax 驱动程序列出 Cassandra 中的列族。它列出了键空间,但输出中缺少许多列族。 我有一个简单的程序: import com.netflix.astyanax.As
我最近开始使用Cassandra在我们的Production environment 。我们有一个24 node cluster与 replication factor of 4 。含义2 copie
这是我的设置: 4 个节点 Cassandra 1.2.19 Astyanax 1.56.49 我正在设置配置 AstyanaxContext context = new AstyanaxContex
我正在使用 Astyanax 客户端从 Cassandra 数据库读取数据。 我在 Cassandra 数据库中有大约一百万行。我有一个十字colocation centre具有四个节点的集群。 这是
如何使用 astyanax 客户端创建带有复合键的表。现在我已经用 cqlsh -3 创建了它,这就是它在 cli 中的样子: [default@KS] describe my_cf; Col
我正在尝试将 Astyanax 用于带有 Java 的 Cassandra。我在 https://github.com/Netflix/astyanax/wiki/Getting-Started 尝试
我编写了一些相当简单的代码来试验 astyanax。当与本地主机上的单节点 Cassandra 数据库通信时,它工作正常,但是当我将相同的架构写入两节点集群(绝对可以从我的主机访问)时,我得到一个 T
我最近开始使用 Cassandra 数据库,并且正在考虑使用 Netflix 客户端 astyanax。我进入了这个页面- https://github.com/Netflix/astyanax 我想
我从事的项目使用astyanax驱动程序来访问Cassandra。我想实现一个异步操作: MutationBatch m; //… ListenableFuture> lf = m.executeAs
Astyanax 通过其 AnnotatedCompositeSerializer 支持 Cassandra 中的复合列。我有一个包含 3 个字段的复合列名称的列族,类似于此示例,改编自 Astyan
过去几周我们一直在尝试评估不同的 Cassandra 客户端,所以现在看来我们将继续使用 Netflix/Astyanax 客户端。 我们正在尝试优化 Cassandra 数据库,主要是为了读
我正在尝试使用 Astyanax 客户端插入 Cassandra 列族中的复合列。下面是我在 Cassandra 中的列族。 create column family USER_DATA with k
我正在开发一个项目,其中我需要使用 Astyanax 客户端删除 Cassandra 中除一列及其数据之外的所有列及其数据。 我有一个如下所示的动态列族,并且该列族中已经有几百万条记录。 create
您好,我正在使用 Astyanax 客户端在我的程序中使用 CQL 访问 Cassandra。我遇到的问题是,当我执行查询时,OperationResult 的行数设置为最大值 10 000。我需要根
我使用 astyanax 连接池定义如下: ipSeeds = "LOAD_BALANCER_HOST:9160"; conPool.setSeeds(ipSeeds) .setDiscoveryTy
我正在尝试从具有 double 类型列的Cassandra表中获取 double 值。我已经使用CQL3语法创建了表: CREATE TABLE data_double ( datetime
我想将 Astyanax 包含在我的项目中。我从 github checkout 代码并用“gradlew build”编译它。我不熟悉gradle。 我将 Astyanx jar 文件手动包含到我的
有没有办法检查当前上下文中是否存在 Astyanax Keyspace?现在我的代码执行以下操作: keyspace = context.getClient(); try{ keyspace.d
我是一名优秀的程序员,十分优秀!