1

Cassandra データ モデルでは、1 回の「書き込み」をサポートするために、複数の列ファミリーを更新する必要があることがよくあります (つまり、双方向インデックスの両側を更新します)。ジョブ構成で 1 つの出力列ファミリーしか指定できない場合、Hadoop でこれを行うにはどうすればよいですか?

4

1 に答える 1

3

これは、次の場所で入手可能なパッチを使用して Cassandra 1.1 にパッチを適用することで可能になります。

https://issues.apache.org/jira/browse/CASSANDRA-4208

これを取得したら、 の代わりに をConfigHelper.setOutputColumnFamily()呼び出しますConfigHelper.setKeyspace()。その後、MultipleOutputs API を使用して、次のようにジョブ構成で出力 CF を指定できます。

MultipleOutputs.addNamedOutput(job, "ColumnFamily1", ColumnFamilyOutputFormat.class, ByteBuffer.class, List.class);
MultipleOutputs.addNamedOutput(job, "ColumnFamily2", ColumnFamilyOutputFormat.class, ByteBuffer.class, List.class);

出力する準備ができたら、名前付き CF を出力名として参照するだけです。

output.write("ColumnFamily1", key, Collections.singletonList(mutation));

outputレデューサーの MultipleOutputs インスタンスへの参照です。

于 2012-05-25T11:50:23.320 に答える