Cassandra 使用Hector0.8.0 do addCounter时出现问题
我使用hector core 0.8.0-1和Cassandra 0.8.0测试addCounter操作,但我发现我的代码无法将任何数据插入CF,有人能告诉我原因吗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
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)我用cassandra cli更改了它的验证类(如果没有,就会有WRITE.fail),我只是想知道是否有hector api来做这个更改…我不相信。在赫克托邮件列表中,这个问题可能会更幸运…或者在这里创建一个关于如何使用赫克托图书馆修改现有列族的新问题似乎赫克托现在真的没有提供,我发现[这里这么说。我还对代码进行了grep..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.