2012-06-08 2 views
9

RecordReaderの実際の動作を説明できる人はいますか?プログラムの実行が開始された後で、方法はどのようにnextkeyvalue()getCurrentkey()およびgetprogress()になりますか?HadoopでのRecordReaderの操作

答えて

13

(新API):デフォルトのマッパークラスは、このようになりますrunメソッドを持っています

public void run(Context context) throws IOException, InterruptedException { 
    setup(context); 
    while (context.nextKeyValue()) { 
     map(context.getCurrentKey(), context.getCurrentValue(), context); 
    } 
    cleanup(context); 
} 

Context.nextKeyValue()Context.getCurrentKey()Context.getCurrentValue()方法はRecordReaderメソッドのラッパーです。ソースファイルsrc/mapred/org/apache/hadoop/mapreduce/MapContext.javaを参照してください。

このループは、Mapper実装のmap(K, V, Context)メソッドを実行して呼び出します。

具体的には、他に何を知りたいですか?

+0

をクリーンアップgetNextKeyValを通じてレコードリーダーの反復を使用してレコードリーダー

  • を初期化()とvalマッパーマップ方法

  • に鍵を渡し.. ...スプリットとレコードがレコードリーダーで絵になることについて説明できますか?私は混乱しています... – Amnesiac

  • +0

    スプリットはInputFormatによって作成され、渡された入力ファイル、入力ファイル自体が分割可能かどうか、最大/最小分割サイズのように渡すその他のオプションから導出されます –

    +0

    各分割はマップメソッドに渡されるレコードを生成するために処理されます –

    0

    org.apache.hadoop.mapred.MapTask - runNewMapper()

    インプの手順:

    1. はマッパー

    2. ための入力分割を取得し、新たなマッパーを作成し、

      スプリットのレコードリーダーを取得

    3. は非常に有用Chris..Thts @

    関連する問題