Cassandra 数据模型经常需要更新多个列族以支持单个“写入”(即更新双向索引的两侧)。当作业配置仅允许指定单个输出列族时,如何使用 Hadoop 执行此操作?
问问题
694 次
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 回答