我使用 R 语言编写了 Mapper 和 Reducer 程序。我正在使用 Hadoop 流式实用程序在 hadoop 上执行 R 程序。我的限制是我需要向映射程序输入 2 个文本文件。如何实现?请尽早协助。
对于单个输入,我将输入文件放在 HDFS 中并使用 stdin 命令引用它们。但是如何为多个输入文件实现它
我使用 R 语言编写了 Mapper 和 Reducer 程序。我正在使用 Hadoop 流式实用程序在 hadoop 上执行 R 程序。我的限制是我需要向映射程序输入 2 个文本文件。如何实现?请尽早协助。
对于单个输入,我将输入文件放在 HDFS 中并使用 stdin 命令引用它们。但是如何为多个输入文件实现它
如果您指定多个输入文件,它们都通过标准输入进行流式传输。记录顺序是任意的。要确定您在特定时间实际阅读的内容,您可以调用Sys.getenv("map_input_file")
.
这是一个很棒的教程,教你如何在 Python 中使用 Hadoop Streaming。但是,该教程中的示例是通过执行以下操作从目录中读取 3 本书,在您的情况下为 2 个文件:
hduser@ubuntu:/usr/local/hadoop$
bin/hadoop jar contrib/streaming/hadoop-*streaming*.jar \
-file /home/hduser/mapper.py -mapper /home/hduser/mapper.py \
-file /home/hduser/reducer.py -reducer /home/hduser/reducer.py \
-input /user/hduser/gutenberg/* -output /user/hduser/gutenberg-output
这
-input /user/hduser/guttenberg/*
将读取该 HDFS 文件夹中的所有文件并进行处理。
希望这能解决您的问题。