1

addCounter操作をテストするためにhector-core0.8.0-1とCassandra0.8.0を使用していますが、コードが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();

ログに次の情報が見つかりました。

> 2011-06-21 17:17:00,025 [Thread-3]
> INFO me.prettyprint.cassandra.hector.TimingLogger
> - Tag                                       Avg(ms) 
>      Min      Max  Std Dev     95th   Count 2011-06-21 17:17:00,030
> [Thread-3] INFO me.prettyprint.cassandra.hector.TimingLogger
> - WRITE.fail_                                  4.84 
>     4.84     4.84     0.00     4.84       1 2011-06-21 17:17:00,031 [Thread-3]
> INFO me.prettyprint.cassandra.hector.TimingLogger
> - META_WRITE.fail_                            17.20 
>    11.31    23.09     5.89    23.09       2 2011-06-21 17:17:00,031 [Thread-3]
> INFO me.prettyprint.cassandra.hector.TimingLogger
> -

mutator.execute();を実行しているときに何か問題があるようです。

前もって感謝します!

4

2 に答える 2

5

現在、Cassandra 0.8.0 では、カウンターを処理するために特別に作成されていない列ファミリーにカウンター列を作成することはできません。

create column family Counter1 with default_validation_class = CounterColumnType;

JIRA リファレンスは次のとおりです: https://issues.apache.org/jira/browse/CASSANDRA-2614

于 2011-06-21T11:49:52.230 に答える
2

こちらです:

cfDef.setDefaultValidationClass(...)

これは、trunk の最新バージョン、0.7.0 および 0.8.0 ブランチで利用できます。

したがって、ソースからプルする必要があります。

または、それを行いたい場合、およびmaven centralで入手可能な最新のhectorを使用していると仮定すると、これを行うことができます

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

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

cluster.addColumnFamiily(cfDef);
于 2011-06-23T01:27:24.433 に答える