在 RHadoop MAP 函数中没有得到正确的结果
Not getting correct result in RHadoop MAP function
以下是我的文本文件内容:
name , tag/tags , location, id
xyz, abc;nhj;xygf;xyz;ajsd, jhdwegyugagdwg, T1
xasdiaos, abcd, jhdwegyugagdwg0 , T3
xyzasihd, jsdh;sdgwyi, jhdwegyugagdasodpg, T2
xyzasihd, jsdh;jadh;ahsg;sdgwyi, jhdwegyugagdasodpg, T4
我想输出标签的id和总数。
期望的输出如下。
T1 , 5
T3 , 1
T2 , 2
T4 , 4
我已经为mapreduce
写了下面的代码。
library(rmr2)
query1= function(input, output = "/user/mtech/15CS60R13/OutputP2"){
q1.map=
function(., lines){
print(lines)
keyval(unlist(strsplit(lines,split=","))[4],
length(unlist(strsplit(unlist(strsplit(lines,split=","))[2],split=";"))))
}
mapreduce(
input = input ,
output = output,
input.format = "text",
map = q1.map,
)
}
query1("/user/xyz/file.txt")
results <- from.dfs ("/user/mtech/15CS60R13/Output")
我得到的结果如下。
print(results)
$key
[1] "T4" "T1"
$val
[1] 4 5
尽管当我在下面尝试更改 map
函数时,
keyval(lines,1)
我得到了所有 4 行。请解释为什么我在输入 strsplit
.
时只得到 2 行
这是地图中的错误:
q1.map=
function(., lines){
for(line in lines){
keyval(unlist(strsplit(line,split=","))[4],
length(unlist(strsplit(unlist(strsplit(line,split=","))[2],split=";"))))
}
}
谢谢!
以下是我的文本文件内容:
name , tag/tags , location, id
xyz, abc;nhj;xygf;xyz;ajsd, jhdwegyugagdwg, T1
xasdiaos, abcd, jhdwegyugagdwg0 , T3
xyzasihd, jsdh;sdgwyi, jhdwegyugagdasodpg, T2
xyzasihd, jsdh;jadh;ahsg;sdgwyi, jhdwegyugagdasodpg, T4
我想输出标签的id和总数。 期望的输出如下。
T1 , 5
T3 , 1
T2 , 2
T4 , 4
我已经为mapreduce
写了下面的代码。
library(rmr2)
query1= function(input, output = "/user/mtech/15CS60R13/OutputP2"){
q1.map=
function(., lines){
print(lines)
keyval(unlist(strsplit(lines,split=","))[4],
length(unlist(strsplit(unlist(strsplit(lines,split=","))[2],split=";"))))
}
mapreduce(
input = input ,
output = output,
input.format = "text",
map = q1.map,
)
}
query1("/user/xyz/file.txt")
results <- from.dfs ("/user/mtech/15CS60R13/Output")
我得到的结果如下。
print(results)
$key
[1] "T4" "T1"
$val
[1] 4 5
尽管当我在下面尝试更改 map
函数时,
keyval(lines,1)
我得到了所有 4 行。请解释为什么我在输入 strsplit
.
这是地图中的错误:
q1.map=
function(., lines){
for(line in lines){
keyval(unlist(strsplit(line,split=","))[4],
length(unlist(strsplit(unlist(strsplit(line,split=","))[2],split=";"))))
}
}
谢谢!