我用r语言编写了mapper和reducer程序。我使用hadoop流实用程序在hadoop上执行r程序。我的限制是我需要输入2个文本文件到Map程序。如何实现?请尽早协助。对于单输入,我将输入文件放在hdfs中,并使用stdin命令引用它们
7z5jn7bk1#
这是一个很好的教程,教你如何在python中使用hadoop流。但是,该教程中的示例是通过以下操作从目录中读取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文件夹中的所有文件并对其进行处理。希望这能解决你的问题。
5lhxktic2#
如果指定多个输入文件,则它们都通过stdin传输。记录的顺序是任意的。想知道你在某个特定的时间读的是哪一本书,你可以打电话 Sys.getenv("map_input_file") .
Sys.getenv("map_input_file")
2条答案
按热度按时间7z5jn7bk1#
这是一个很好的教程,教你如何在python中使用hadoop流。但是,该教程中的示例是通过以下操作从目录中读取3本书(在您的案例中为2个文件):
这个
将读取该hdfs文件夹中的所有文件并对其进行处理。
希望这能解决你的问题。
5lhxktic2#
如果指定多个输入文件,则它们都通过stdin传输。记录的顺序是任意的。想知道你在某个特定的时间读的是哪一本书,你可以打电话
Sys.getenv("map_input_file")
.