java - 在一个输入文件上运行两个映射器,在一个简化器上运行一个reducer,以实现简单的hadoop mapreduce作业

标签 java hadoop mapreduce

在一个简单的MapReduce程序中,有一个输入文件,分割每一行后,将对其进行映射。但是,现在我想阅读每一行,并在拆分后,用不同的键将其映射两次。读取一行和两张 map (两次使用context.write)。
我读:
Running two mapper and two reducer for simple hadoop mapreduce jobs
答案是:因此,只需将2个文件放入输入目录,即可运行2个映射器。现在我应该放两个相同的文件?

最佳答案

没有必要在映射器中读取行,将其拆分并传递到某个地方。立即处理:

void map(K key, Text value, Context ctx) {
    String k1 = getKey1(value);
    String k2 = getKey2(value);
    map1(k1, value);
    map2(k2, value);
}

void map1(...) { ... }
void map2(...) { ... }

关于java - 在一个输入文件上运行两个映射器,在一个简化器上运行一个reducer,以实现简单的hadoop mapreduce作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743632/

相关文章:

hadoop - 如何将数据从生产集群传输到数据实验室集群进行实时数据分析?

java - 在 MapReduce 中,如何将数组列表作为值从映射器发送到 reducer

hadoop - 在 hadoop 多节点集群设置中创建从作业日志到 ${hadoop.tmp.dir} 的符号链接(symbolic link)失败

java - Kafka 一个消费者一个partition

java - 类路径似乎正确,但 JVM 仍然无法找到或加载主类

java - 下载以 Blob 格式或二进制格式存储在 MySQL 数据库中的 PDF 文件时出现 Null 异常

java - Bluemix 上的 Web 服务发生 SRVE0207E 错误

java - 从Java Spark到ElasticSearch的连接数

hadoop - 有没有办法让 Spark 在不使用 Hadoop 的情况下读取 AWS S3 文件?

hadoop - MRv1 和 MRv2 参数