2011-10-27 63 views

回答

3

我假設你的意思是從你的客戶端代碼傳遞一個對象給你的Mappers和Reducers?

你將不得不使用某種形式的序列化來做到這一點,因爲數據正在通過線路傳輸。有幾種可能性取決於您的場景:

  1. 可能最好的解決方案是在Mappers/Reducers中實例化對象。要傳遞構造函數調用所需的信息,可以使用作業配置。

    conf.setInt("foo", 32); 
    conf.set("bar", "bazz"); 
    
  2. 如果你的對象是序列化和非常小,你可以把它序列化,包括它在JobConf base64編碼的版本。

  3. 如果序列化對象是大,你可以使用分佈式緩存:http://hadoop.apache.org/common/docs/r0.20.2/mapred_tutorial.html#DistributedCache
+1

選中此[文章](http://www.lexemetech.com/2008/07/rpc-and-serialization -with-hadoop.html)比較可用於Hadoop的不同序列化框架。如果對象很大,壓縮也可能被考慮。 –

相關問題