r reducer在AmazonEMR中工作不正常

kfgdxczn  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(334)

我在amazonemr中做了一个map-reduce代码。
我的输入文件格式: URL1 word1 word2 word3 URL2 word4 word2 word3 URL3 word1 word7 word2 我希望输出为:url是用空格连接的 word1 URL1 URL3 word2 URL1 URL2 URL3 word3 URL1 URL2 .. ... .. 但是emr使用了3个reducer并创建了3个输出文件。文件方面的输出是正确的,它是组合值,没有重复的键。但是如果我们同时看到这3个文件,就会有重复的密钥。
输出文件1: word1 URL1 URL3 word2 URL1 .. .. 输出文件2: word2 URL2 URL3 word3 URL1 .. .. 看,那个 word2 分发到2个文件。我需要一把钥匙只在一个文件里。
我用的是电子病历中的hadoop流媒体。请建议我正确的设置,以删除不同文件中的重复键。
我想我的Map绘制器工作正常。这是我的减速机:

process <- function(mat){

rows = nrow(mat)
cols = ncol(mat)

for(i in 1:rows)
{

    for(j in i+1:rows)
    {
        if(j<=rows)
        {
            if(toString(mat[i,1])==toString(mat[j,1]))
            {
            x<-paste(mat[i,2],mat[j,2],sep=" ")
            mat[i,2]=x
            mat<-mat[-j,]
            rows<-rows-1
            }
        }
    }
}

write.table(mat, file=stdout(), quote=FALSE, row.names=FALSE, col.names=FALSE)
}

reduce <- function(input){
  #create column names to make is easier to work with the data set
  names <- c("word", "value")
  cols = as.list(vector(length=2, mode="character"))
  names(cols) <- names

  #read from the input
  hsTableReader(file=input, cols, ignoreKey=TRUE, chunkSize=100000, FUN=process, sep=" ")

}
e37o9pze

e37o9pze1#

你有没有试过用一个组合器把同样的钥匙收集到同一个减速机里?这样,您应该能够将所有具有类似键的单词收集到一个缩略器中。使用组合器查看一些wordcount示例,以了解组合器类是如何工作的。

相关问题