Cassandra 使用Hector0.8.0 do addCounter时出现问题

Cassandra 使用Hector0.8.0 do addCounter时出现问题,cassandra,hector,Cassandra,Hector,我使用hector core 0.8.0-1和Cassandra 0.8.0测试addCounter操作,但我发现我的代码无法将任何数据插入CF,有人能告诉我原因吗 StringSerializer ser = StringSerializer.get(); Mutator<String> mutator = HFactory.createMutator(keyspace, ser); List<HCounterColumn<String>> counter

我使用hector core 0.8.0-1和Cassandra 0.8.0测试addCounter操作,但我发现我的代码无法将任何数据插入CF,有人能告诉我原因吗

StringSerializer ser = StringSerializer.get();
Mutator<String> mutator = HFactory.createMutator(keyspace, ser);

List<HCounterColumn<String>> counterColumns = Arrays.asList(
        HFactory.createCounterColumn("1", 30L, ser),
        HFactory.createCounterColumn("2", 20L, ser)
        );  

for (HCounterColumn c : counterColumns)
{   
    mutator.addCounter("testKey1", "CounterColumn", c); 
    mutator.addCounter("testKey2", "CounterColumn", c); 
}   

mutator.execute();
执行mutator.execute()时似乎出现了问题


提前谢谢

目前,在Cassandra 0.8.0中,无法在列族中创建计数器列,该列族不是专门为处理计数器而创建的:

create column family Counter1 with default_validation_class = CounterColumnType;

以下是JIRA参考:

目前,在Cassandra 0.8.0中,您无法在列族中创建计数器列,该列族不是专门为处理计数器而创建的:

create column family Counter1 with default_validation_class = CounterColumnType;
以下是JIRA参考资料:

这样:

cfDef.setDefaultValidationClass(...)
这在最新版本的trunk、0.7.0和0.8.0 branch中提供

所以你需要从源头上获取信息

或者,如果您想这样做,并且假设您正在使用maven central提供的最新hector,您可以这样做

ThriftCfDef cfDef = new ThriftCfDef(String keyspace, String   columnFamilyName, ComparatorType comparatorType)

cf.setDefaultValidationClass(ComparatorType.COUNTERTYPE.getClassName());

cluster.addColumnFamiily(cfDef);
这样:

cfDef.setDefaultValidationClass(...)
这在最新版本的trunk、0.7.0和0.8.0 branch中提供

所以你需要从源头上获取信息

或者,如果您想这样做,并且假设您正在使用maven central提供的最新hector,您可以这样做

ThriftCfDef cfDef = new ThriftCfDef(String keyspace, String   columnFamilyName, ComparatorType comparatorType)

cf.setDefaultValidationClass(ComparatorType.COUNTERTYPE.getClassName());

cluster.addColumnFamiily(cfDef);

如何指定CF?如何指定CF?谢谢sdolgy,但我检查了hector的源代码,发现无法使用CounterColumnType验证类定义columnfamily。我发现了一些代码,比如
columnDefinition.setValidationClass(ComparatorType.LONGTYPE.getClassName())以设置列的属性,但hector0.8.0的ComparatorType在此处没有org.apache.cassandra.db.marshal.CounterColumnType。是否可以首先通过命令行创建CF?或者,查看此链接:“ColumnFamilyDefinition cfDef”是您想要查看的内容。您不需要使用验证设置每一列。。。只需设置默认值。谢谢@sdolgy,实际上我是通过使用
ColumnFamilyDefinition cfDef1=hfFactory创建CF的。createColumnFamilyDefinition(“Keyspace1”,“Counter2”);cluster.addColumnFamily(cfDef1)grep“CounterColumnType”-R.
谢谢sdolgy,但我检查了hector的源代码,发现我无法使用CounterColumnType验证类定义columnfamily。我找到了一些类似
columnDefinition.setValidationClass(ComparatorType.LONGTYPE.getClassName())的代码;
以设置列的属性,但hector0.8.0的ComparatorType在此处没有org.apache.cassandra.db.marshal.CounterColumnType。是否可以首先通过命令行创建CF?或者,请查看此链接:“ColumnFamilyDefinition cfDef”是您想要查看的内容。您不需要使用验证设置每个列…只需设置默认值。感谢@sdolgy,实际上我是通过使用
ColumnFamilyDefinition cfDef1=HFactory.createColumnFamilyDefinition(“Keyspace1”,“Counter2”);cluster.addColumnFamily(cfDef1)创建CF的
并且我通过cassandra cli更改了它的验证类(如果没有,将出现WRITE.fail),我只是想知道是否有一个hector api来做这个更改…我不相信。可能在hector邮件列表中会有更好的运气来回答这个问题…或者在这里创建一个关于如何使用hector Library修改现有列族的新问题。我发现,hector似乎现在真的没有提供这个功能[这里是这样说的。我还对代码进行了grep..
grep“CounterColumnType”-R.