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