2010-07-08 59 views
1

從我的map/reduce輸出的值是一個可寫的數組,它寫在輸出文件part-00000中(hadoop默認是這樣做的)。我需要這個數組用於我的下一個映射函數,所以我想將這個數組保存在分佈式緩存中。可以告訴我如何從輸出文件(part-00000)讀取哪些文件可能不是文本文件並存儲在分佈式緩存中。hadoop,map/reduce輸出文件(part-00000)和分佈式緩存

+0

一般來說,Hadoop將會輸出一個包含許多part -...文件的目錄。你不能假設你有一個單一的輸出文件。 – 2010-07-08 08:33:00

回答

1

我的建議:

創建一個新的Hadoop工作具有以下屬性:

  • 輸入與所有的部分-...文件的目錄。
  • 創建寫入分佈式緩存的自定義OutputFormat類。
  • 現在,讓您的工作基本上看有這樣的事情:

    conf.setInputFormat(SequenceFileInputFormat.class); 
    conf.setMapperClass(IdentityMapper.class); 
    conf.setReducerClass(IdentityReducer.class); 
    conf.setOutputFormat(DistributedCacheOutputFormat.class); 
    

看一看雅虎的Hadoop教程,因爲它在這一點上的一些例子:http://developer.yahoo.com/hadoop/tutorial/module5.html#outputformat

HTH

+0

感謝您的解釋,但我需要更詳細地描述自定義輸出格式以寫入分佈式緩存 – 2010-07-09 06:21:06

+0

我假設您的分佈式緩存軟件允許您編寫客戶端來將值放入其中。現在以雅虎爲例,填寫「void write(K key,V value)」方法,並調用分佈式緩存軟件的API。 – 2010-07-09 13:55:47