簡體   English   中英

R Reducer在Amazon EMR中無法正常工作

[英]R Reducer is not working properly in Amazon EMR

我已經在R中完成了地圖精簡代碼以在Amazon EMR中運行。

我的輸入文件格式: 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個輸出文件。 從文件的角度來看,輸出是正確的,它是組合值,沒有重復的鍵。 但是,如果我們一起看到這三個文件,則有重復的密鑰。

輸出文件1: word1 URL1 URL3 word2 URL1 .. ..

輸出文件2: word2 URL2 URL3 word3 URL1 .. ..

請參閱,將word2分發到2個文件中。 我只需要一個密鑰在一個文件中。

我正在使用EMR中的Hadoop流。 請為我建議正確的設置,以刪除不同文件中的重復鍵。

我認為我的映射器工作正常。 這是我的減速器:

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=" ")


}

您是否嘗試過使用組合器將相同的鍵收集到相同的reducer中? 這樣,您應該能夠將具有類似鍵的所有單詞收集到單個縮減器中。 使用組合器檢查一些單詞計數示例,以了解組合器類的工作方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM