hadoop - mapreduce 的多表输入

标签 hadoop mapreduce accumulo

我正在考虑使用累积表作为输入来进行 mapreduce。
有没有一种方法可以将 2 个不同的表作为输入,就像 addInputPath 这样的多个文件输入一样?
或者是否可以使用 AccumuloInputFormat 从文件中获取一个输入,而从表中获取另一个输入?

最佳答案

您可能想看一下 AccumuloMultiTableInputFormat。 Accumulo 手册演示了如何使用它 here .

示例用法:

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);

参见 AccumuloMultiTableInputFormat 的单元测试 here一些额外的信息。

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

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

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

关于hadoop - mapreduce 的多表输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44755879/

相关文章:

java - 无法在hadoop3.1.3中运行jar文件

java - Hadoop,在单个作业中链接多个作业

installation - Accumulo 卡住无法启动

apache - java.lang.RuntimeException : Unable to instantiate org. apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 客户端

hadoop - 如何从 Cassandra 加载数据到 HDFS?

hadoop - Hbase 客户端创建数千个到单个服务器的连接

apache-storm - 使用 accumulo 运行 Storm 连接时出错

sql - Oracle到Impala查询转换

python - 使用 Hadoop Streaming Python 的 SequenceFile 格式

hadoop - 在 Mac 上安装 Hadoop、ZooKeeper、AccumuLo