Hector只插入主键的一部分

时间:2016-02-29 10:10:44

标签: java cassandra hector cqlsh

我在一些我想了解的遗留代码中有一个查询。 Cassandra表是这样的:

 cqlsh:mykeyspace> desc table "logTable"

CREATE TABLE mykeyspace."logTable" (
    key text,
    key2 text,
    column1 text,
    column2 text,
    column3 text,
    column4 text,
    value blob,
    PRIMARY KEY ((key, key2), column1, column2, column3, column4)
)

我不是开玩笑,这些列确实是这样命名的,所以每列都可以以任何方式使用。这使得代码非常难以阅读。现在,Java中有一些代码我不明白:

private static final StringSerializer ss = StringSerializer.get();

public void logProgressMetadata(String affiliationId, String datasetId, String jobId, ProgressMetadata metadata) {
        Composite rowKey = new Composite();
        rowKey.addComponent("JOB_PROGRESS", ss);

        Composite column = new Composite();
        column.addComponent(affiliationId, ss);
        column.addComponent(datasetId, ss);
        column.addComponent(jobId, ss);

        Mutator<Composite> mutator = HFactory.createMutator(keyspace, CompositeSerializer.get());
        mutator.addInsertion(rowKey, LOG_CF, HFactory.createColumn(column, metadata.toJson(), CompositeSerializer.get(), ss));

        mutator.execute();
    }

关于此代码的问题与 rowKey 有关:&#34; key&#34;和&#34; key2&#34;?如果我尝试在CQL中指定只是键而不是key2,那么我会收到错误。如果我没有任何限制地查询(选择*来自&#34; logTable&#34;),那么我找不到包含&#34; JOB_PROGRESS&#34;的任何列。作为一个例子,所以我只能从代码中解决这个问题。

谢谢, 谢尔班

0 个答案:

没有答案