在java中,我会使用:
多输入.add输入路径(conf, path, inputFormatClass, 映射器类)
以添加多个输入,并为每个输入使用不同的映射器。
现在我正在使用python在hadoop中编写一个流作业,可以做类似的工作吗?
我想这能帮助你:https://github.com/hyonaldo/hadoop-multiple-streaming.
在这里,您还可以看到“这些不同输入路径的不同映射器”:
hadoop jar hadoop-multiple-streaming.jar \
-input myInputDirs \
-multiple "outputDir1|mypackage.Mapper1|mypackage.Reducer1" \
-multiple "outputDir2|mapper2.sh|reducer2.sh" \
-multiple "outputDir3|mapper3.py|reducer3.py" \
-multiple "outputDir4|/bin/cat|/bin/wc" \
-libjars "libDir/mypackage.jar" \
-file "libDir/mapper2.sh" \
-file "libDir/mapper3.py" \
-file "libDir/reducer2.sh" \
-file "libDir/reducer3.py"
可以使用多个 -input 选项来指定多个输入路径:
hadoop jar hadoop-streaming.jar -input foo.txt -input bar.txt ...
问题内容: 我的用例如下: 我有一个仅地图的mapreduce作业,该作业需要一个输入文件,进行了大量的解析和调整,然后再写回。但是,某些行的格式可能正确也可能不正确,如果是这样,我想将原始行写入单独的文件中。 看来,执行此操作的一种方法是将文件名添加到我正在打印的行的前面,并使用multipleOutputFormat参数。例如,如果我最初有: 我可以改为: 此解决方案唯一的问题是我不希望fil
我正在使用Hadoop处理一个mapreduce项目。我目前有3个连续的工作。 我想使用Hadoop计数器,但问题是我想在第一个作业中进行实际计数,却在第3个作业的reducer中访问计数器值。 我怎样才能做到这一点呢?我应该在哪里定义?我需要通过它扔第二个工作吗?这也将有助于看到一些代码示例这样做,因为我还没有找到任何东西。 注意:我使用的是Hadoop 2.7.2 编辑:我已经尝试了这里解释的
在Hadoop MapReduce中是否有可能使用多个不同的映射器有多个输入?每个映射器类都在一组不同的输入上工作,但它们都会发出由同一个减速器使用的键值对。请注意,我不是在这里谈论链接映射器,我是在谈论并行运行不同的映射器,而不是顺序运行。
问题内容: 说我有以下代码 我有一些可能会返回的函数,并将其应用于流的元素。然后,我想确保将所有结果改为默认值。与使用前面的示例定义了辅助变量并在lambda表达式中使用代码块的示例相比,使用下面的示例中的两个映射有什么明显的区别? 是否存在避免在lambda函数中使用块语句的标准? 问题答案: 都可以。选择一个对您来说更易读的。如果计算能够自然分解,就像这样,那么多个映射可能更易读。某些计算不会
我正在从mapper生成两个输出文件。我使用Multipleoutput api生成两个输出。我不确定这样做是否正确。这是我的代码。。请仔细检查一下,给我你的建议。。当我运行代码时,我得到了一个错误:java。lang.NullPointerException。。 这是日志... 错误:java。com上的lang.NullPointerException。尼尔森。grfe。Export\u Co
Hadoop:(ver-1.2.1),(1+8节点集群) 我的用例是,我试图获得执行特定pig脚本所花费的时间,以及从mapreduce的角度来看,这些时间是如何花费的。我需要多次运行pig脚本(比如说100),以获得平均时间。我启用了,这使我在每个udf函数上花费时间作为mapreduce计数器。我还对每个作业报告的其他延迟、内存度量(cpu时间、堆使用率)感兴趣。我可以从jobtracker