我试图使用rhadoop包运行一个简单的rmr作业,但它不起作用
print("Initializing variable.....")
Sys.setenv(HADOOP_HOME="/usr/hdp/2.2.4.2-2/hadoop")
Sys.setenv(HADOOP_CMD="/usr/hdp/2.2.4.2-2/hadoop/bin/hadoop")
print("Invoking functions.......")
# Referece taken from Revolution Analytics
wordcount = function( input, output = NULL, pattern = " ")
{
mapreduce(
input = input ,
output = output,
input.format = "text",
map = wc.map,
reduce = wc.reduce,
combine = T)
}
wc.map =
function(., lines) {
keyval(
unlist(
strsplit(
x = lines,
split = pattern)),
1)}
wc.reduce =
function(word, counts ) {
keyval(word, sum(counts))}
# Function Invoke
wordcount('/user/hduser/rmr/wcinput.txt')
我正在运行上面的脚本作为
Rscript wordcount.r
我在犯错误。
[1] "Initializing variable....."
[1] "Invoking functions......."
Error in wordcount("/user/hduser/rmr/wcinput.txt") :
could not find function "mapreduce"
Execution halted
请告诉我有什么问题。
1条答案
按热度按时间7vhp5slm1#
首先,你必须设置
HADOOP_STREAMING
代码中的环境变量。请尝试下面的代码,并注意,该代码假定您已将文本文件复制到
hdfs
文件夹examples/wordcount/data
###r代码:输出:
下面是运行r字数map reduce程序的另一个示例,供您参考。
希望这有帮助。