如何将CounterMutation克制成Cassandra ITrigger

时间:2017-05-12 08:37:56

标签: cassandra cassandra-3.0

我正在使用Cassandra 3.10,我需要计算我有多少数据修改。为了解决问题,我将使用cassandra触发器,但触发器工作的结果需要是Mutation

public interface ITrigger {
    public Collection<Mutation> augment(Partition update);
}

但我有CounterMutation,

@Override
public Collection<Mutation> augment(Partition update) {
    String keyspaceName = update.metadata().ksName;
    //CFMetaData metadata = Schema.instance.getCFMetaData(keyspaceName, cfName);

    long timestamp = System.currentTimeMillis();
    String cfName = "user_product_count_cf";

    CFMetaData counterCfMetadata = Schema.instance.getCFMetaData(keyspaceName, cfName);
    ByteBuffer key = toByteBuffer("test-user-key");    
    PartitionUpdate.SimpleBuilder builder = PartitionUpdate.simpleBuilder(counterCfMetadata, key);

    ByteBuffer columnName = toByteBuffer("test-counter-column");
    ByteBuffer countValue = CounterContext.instance().createLocal(1);
    builder.timestamp(timestamp).row(Clustering.make(columnName)).add("value", value);

    Mutation mutation = builder.buildAsMutation();
    //TODO this line does not work
    //return Collections.singletonList(mutation);

    CounterMutation cMutation = new CounterMutation(mutation, ConsistencyLevel.ONE);
    //I do not understand what I have to do next.

    //Now I use next line and it is work, but I don't sure that it is good practice.
    return Collections.singletonList(cMutation.applyCounterMutation());
}

那么如何将CounterMutation转换为Mutation?

0 个答案:

没有答案