以下是我的文本文件内容:
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)我得到了所有的四行。请解释为什么我只有2行当我放strsplit。
发布于 2015-10-14 14:12:36
这是地图上的错误:
q1.map=
function(., lines){
for(line in lines){
keyval(unlist(strsplit(line,split=","))[4],
length(unlist(strsplit(unlist(strsplit(line,split=","))[2],split=";"))))
}
}谢谢!
https://stackoverflow.com/questions/33095204
复制相似问题