2012-02-27 93 views
0

我正在Hadoop中開發一個演示應用程序,我的輸入是.mrc圖像文件。我想將它們加載到hadoop並對它們執行一些圖像處理。自定義二進制輸入 - Hadoop

這些是二進制文件,其中包含一個帶有元數據的大標題,後跟一組圖像的數據。關於如何讀取圖像的信息也包含在標題中(例如,number_of_images,number_of_pixels_x,number_of_pixels_y,bytes_per_pixel,所以在標題字節之後,第一個[number_of_pixels_x*number_of_pixels_y*bytes_per_pixel]是第一個圖像,然後是第二個等等)

什麼是這些類型的文件了良好的輸入格式我覺得兩種可能的解決方案:

  1. 將它們轉換通過將元數據序列文件頭序列文件,併爲每個圖像對在這種情況下,可以我訪問所有映射器中的元數據?
  2. 編寫一個自定義的InputFormat和RecordReader併爲每個圖像創建split,同時pl在分佈式緩存中使用元數據。

我是Hadoop的新手,所以我可能會錯過一些東西。你認爲哪種方法更好?是我缺少的其他方式嗎?

回答

0

不知道你的文件格式,第一個選項似乎是更好的選擇。使用序列文件可以利用很多SequenceFile相關工具來獲得更好的性能。但是,這種方法有兩件事使我感到擔憂。

  1. 如何將.mrc文件轉換爲.seq格式?
  2. 你提到的頭大,這可能會降低SequenceFiles

但即使有這些問題的表現,我認爲在SequenceFile的代表你的數據是最好的選擇。

+0

總是129KB。這太大了嗎? – fgrollio 2012-02-29 10:28:06

+0

如果頭部很小,那麼你可能沒問題。當你說大頭時,我認爲它的大小是幾MB – 2012-02-29 12:57:45