mapreduce的多表输入

voj3qocg  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(298)

我正在考虑使用accumulo表作为输入来做一个mapreduce。
有没有一种方法可以让两个不同的表作为输入,就像输入多个文件一样 addInputPath ?
或者一个输入来自一个文件,另一个输入来自一个带有 AccumuloInputFormat ?

j8ag8udp

j8ag8udp1#

你可能想看看 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);

有关更多信息,请参阅此处的AccumulomMultiTableInputFormat单元测试。
请注意,与正常的多输入不同,不能指定在每个表上运行不同的Map器。不过,由于传入的键/值类型相同,因此在这种情况下这不是一个大问题,您可以使用:

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

在Map器中计算记录来自哪个表(取自accumulo手册)。

相关问题