如何在单个Hadoop作业中输出到多个Cassandra列族?

时间:2012-05-24 18:17:00

标签: hadoop cassandra

Cassandra数据模型经常需要更新多个列族以支持单个“写入”(即更新双向索引的两侧)。当作业配置只允许指定单个输出列族时,如何使用Hadoop执行此操作?

1 个答案:

答案 0 :(得分: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实例的引用。