1

Cassandra 数据模型经常需要更新多个列族以支持单个“写入”(即更新双向索引的两侧)。当作业配置仅允许指定单个输出列族时,如何使用 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是对 reducer 中 MultipleOutputs 实例的引用。

于 2012-05-25T11:50:23.320 回答