我正在考虑使用accumulo表作为输入来做一个mapreduce。有没有一种方法可以让两个不同的表作为输入,就像输入多个文件一样 addInputPath ?或者一个输入来自一个文件,另一个输入来自一个带有 AccumuloInputFormat ?
addInputPath
AccumuloInputFormat
j8ag8udp1#
你可能想看看 AccumuloMultiTableInputFormat . accumulo手册在这里演示了如何使用它。用法示例:
AccumuloMultiTableInputFormat
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);
有关更多信息,请参阅此处的AccumulomMultiTableInputFormat单元测试。请注意,与正常的多输入不同,不能指定在每个表上运行不同的Map器。不过,由于传入的键/值类型相同,因此在这种情况下这不是一个大问题,您可以使用:
RangeInputSplit split = (RangeInputSplit)c.getInputSplit(); String tableName = split.getTableName();
在Map器中计算记录来自哪个表(取自accumulo手册)。
1条答案
按热度按时间j8ag8udp1#
你可能想看看
AccumuloMultiTableInputFormat
. accumulo手册在这里演示了如何使用它。用法示例:
有关更多信息,请参阅此处的AccumulomMultiTableInputFormat单元测试。
请注意,与正常的多输入不同,不能指定在每个表上运行不同的Map器。不过,由于传入的键/值类型相同,因此在这种情况下这不是一个大问题,您可以使用:
在Map器中计算记录来自哪个表(取自accumulo手册)。