2010-06-10 130 views
2

通常在輸入文件中能夠部分讀取和處理Mapper功能(如在文本文件中)。是否有任何事情可以處理二進制文件(比如說圖像,序列化對象),這些文件需要所有塊在同一主機上,然後才能開始處理。Hadoop:映射二進制文件

+1

你有點兒問這個問題。我在上一個問題中發佈的答案在某種程度上解決了這個問題:http://stackoverflow.com/questions/3012121/hadoop-processing-large-serialized-objects – 2010-06-15 14:51:44

回答

3

將您的圖像粘貼到SequenceFile中;那麼你將能夠使用map-reduce迭代地處理它們。

不太明顯:Hadoop本身並不知道任何有關文本和非文本的內容。它只有一個知道如何打開輸入流的類(hdfs將不同節點上的塊一起處理,以使它們顯示爲一個大文件)。最重要的是,您有一個Reader和一個InputFormat,它知道如何確定該流在哪裏記錄開始,結束的位置以及如何在文件中間的某處放棄下一個記錄的開頭。 TextInputFormat只是一個實現,它將換行符視爲記錄分隔符。還有一種稱爲SequenceFile的特殊格式,您可以將任意二進制記錄寫入,然後讓它們退出。使用它。

+0

現在可能希望將Avro類型轉換爲SequenceFile – rICh 2012-12-19 15:11:47