MAPREDUCE的多个表输入



我正在考虑使用Accumulo表作为输入进行MAPREDUCE。
有没有一种方法可以将2个不同的表作为输入,就像addInputPath这样的多个文件输入的方式相同的方式?
还是可以从文件中获得一个输入,另一个输入来自AccumuloInputFormat

您可能想看看AccumuloMultiTableInputFormat。Accumulo手册演示了如何在此处使用它。

示例用法:

job.setInputFormat(AccumuloInputFormat.class);
AccumuloMultiTableInputFormat.setConnectorInfo(job, user, new PasswordToken(pass));
AccumuloMultiTableInputFormat.setMockInstance(job, INSTANCE_NAME);
InputTableConfig tableConfig1 = new InputTableConfig();
InputTableConfig tableConfig2 = new InputTableConfig();
Map<String, InputTableConfig> configMap = new HashMap<String, InputTableConfig>();
configMap.put(table1, tableConfig1);
configMap.put(table2, tableConfig2);
AccumuloMultiTableInputFormat.setInputTableConfigs(job, configMap);

有关一些其他信息,请参见AcculoMultableInputformat的单元测试。

请注意,与普通多个输入不同,您无法指定在每个表上运行的不同映射器。虽然在这种情况下,它不是一个巨大的问题,因为传入的密钥/值类型相同,您可以使用:

RangeInputSplit split = (RangeInputSplit)c.getInputSplit();
String tableName = split.getTableName();

锻炼映射器中的记录来自哪个表(取自Accumulo手册(。

最新更新