首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用java/astyanax将值插入列族?

如何使用java/astyanax将值插入列族?
EN

Stack Overflow用户
提问于 2014-08-28 01:12:45
回答 2查看 579关注 0票数 1

解决了-

我不知道为什么,但是移除

代码语言:javascript
复制
m.withRow(CF_test, "acct1234")
   .incrementCounterColumn("loginCount", 1); 

我的部分代码让它起作用了。或者,如果有人能解释为什么会这样做,我们将不胜感激。谢谢!

我对卡桑德拉-克莱的阿斯特亚纳克斯有意见。我从Netflix网站上找不到什么,所以我想问问那些有更多第一手经验的人。

如何将行插入到已经在Cassandra中创建的列家族中?目前,我的代码如下所示:

代码语言:javascript
复制
// Inserting data
MutationBatch m = keyspace.prepareMutationBatch();


//Initialize Column family
ColumnFamily<String, String> CF_test =
new ColumnFamily<String, String>(
"users",              // Column Family Name
StringSerializer.get(),   // Key Serializer
StringSerializer.get());  // Column Serializer


m.withRow(CF_test, "default")
  .putColumn("full_name", "john", null)
  .putColumn("email", "smith", null)
  .putColumn("state", "555 Elm St", null)
  .putColumn("gender", "Male", null)
  .putColumn("birth_year", 30, null);

m.withRow(CF_test, "acct1234")
  .incrementCounterColumn("loginCount", 1);


  OperationResult<Void> result = m.execute();

但是,它给出了以下错误:

代码语言:javascript
复制
Exception in thread "main" com.netflix.astyanax.connectionpool.exceptions.BadRequestException: BadRequestException: [host=127.0.0.1(127.0.0.1):9160, latency=55(55), attempts=1]InvalidRequestException(why:invalid operation for non commutative columnfamily users)
at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:159)
at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65)
at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:28)
at com.netflix.astyanax.thrift.ThriftSyncConnectionFactoryImpl$ThriftConnection.execute(ThriftSyncConnectionFactoryImpl.java:151)
at com.netflix.astyanax.connectionpool.impl.AbstractExecuteWithFailoverImpl.tryOperation(AbstractExecuteWithFailoverImpl.java:69)
at com.netflix.astyanax.connectionpool.impl.AbstractHostPartitionConnectionPool.executeWithFailover(AbstractHostPartitionConnectionPool.java:256)
at com.netflix.astyanax.thrift.ThriftKeyspaceImpl.executeOperation(ThriftKeyspaceImpl.java:485)
at com.netflix.astyanax.thrift.ThriftKeyspaceImpl.access$000(ThriftKeyspaceImpl.java:79)
at com.netflix.astyanax.thrift.ThriftKeyspaceImpl$1.execute(ThriftKeyspaceImpl.java:123)
at Test1.main(Test1.java:76)

Caused by: InvalidRequestException(why:invalid operation for non commutative columnfamily users)
at org.apache.cassandra.thrift.Cassandra$batch_mutate_result.read(Cassandra.java:20833)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
at org.apache.cassandra.thrift.Cassandra$Client.recv_batch_mutate(Cassandra.java:964)
at org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(Cassandra.java:950)
at com.netflix.astyanax.thrift.ThriftKeyspaceImpl$1$1.internalExecute(ThriftKeyspaceImpl.java:129)
at com.netflix.astyanax.thrift.ThriftKeyspaceImpl$1$1.internalExecute(ThriftKeyspaceImpl.java:126)
at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:60)
... 8 more

创建关键空间起作用了,现在我无法改变列族。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-04 10:04:19

要使用

代码语言:javascript
复制
m.withRow(CF_test, "acct1234").incrementCounterColumn("loginCount", 1);

(柜台)

您必须定义列族(或超级列族),其列将充当计数器。

默认验证类必须设置为CounterColumnType。

CounterColumnType只能在default_validation_class中设置。列族要么只包含计数器,要么根本不包含计数器。

看看此页,它指的是此页

票数 2
EN

Stack Overflow用户

发布于 2014-08-29 19:52:30

我不知道为什么,但是移除

代码语言:javascript
复制
m.withRow(CF_test, "acct1234")
   .incrementCounterColumn("loginCount", 1); 

我的部分代码让它起作用了。或者,如果有人能解释为什么会这样做,我们将不胜感激。谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25539267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档