2012-07-25 24 views
1

我正在編寫一個mapreduce作業,並且我想要將這些輸入傳遞給內存中的映射器。hadoop - 我如何使用內存中的數據作爲輸入格式?

將輸入傳遞給映射器的常用方法是通過Hdfs - sequencefileinputformat或Textfileinputformat。這些輸入格式需要在fdfs中有文件,這些文件將被加載並分割成映射器

我無法找到一個簡單的方法來傳遞,讓我們來說說映射器的元素列表。 我發現自己必須將這些元素寫入磁盤,然後使用fileinputformat。

任何解決方案?

我在java offcourse寫代碼。

謝謝。

回答

0

輸入格式不必從磁盤或文件系統加載數據。 也有輸入格式從其他系統讀取數據,如HBase或(http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapred/TableInputFormat.html),其中數據不隱含在磁盤。它只暗示可以通過羣集的所有節點上的某些API使用。
所以你需要實現輸入格式,在你自己的邏輯中分割數據(只要沒有文件,它是你自己的任務),並將數據切分成記錄
。 請注意,您的內存數據源應該分佈在集羣的所有節點上並運行。您還需要一些有效的IPC機制將數據從您的流程傳遞到Mapper進程。
我也很高興知道你的情況是什麼導致這種不尋常的要求。

+0

我有一個簡單的代碼,獲取文件系統中的路徑,並返回路徑下所有文件的列表。我想在羣集上運行此代碼以獲得更好的結果。所以我想在映射器中有這個代碼,並且只需要收集reducer。我想給每個映射器一個輸入一個路徑來運行它。我有一個內存中的根路徑列表,我想將它們作爲輸入傳遞給我的映射器。 這是用例。也許有更好的方法來做到這一點在地圖縮小。 – user1251654 2012-07-25 09:03:51

相關問題