jazz 寫:
1. InputFormat 中的 RecordReader 會將 InputSplit 的每一筆 <K,V> 讀入,給 map() 函數當輸入。
2. 優先在資料所在的節點執行(Data Locality),同一櫃(Rack-Local)次之,不同櫃最後。
- Jazz
先謝過Jazz大,小弟這幾天trace FileInputFotmat 以及 TextInputFormat(extends FileInputFormat)
已經了解FileInputFotmat#getSplit() 將資料邏輯分割成多個FileSplit的步驟
而在TextInputFormat#createRecordReader()將FileSplit中的chunk分成一筆一筆的<k,v>給map()讀入部分
透過return new LineRecordReader()達成,而在LineRecordReader#initialize()這個函式中
會依照FileSplit去讀真的data,但是始終找不到,在哪邊有call initialize()這個函式
抑或是小弟有想法錯誤的地方,再請有經驗的大大幫助
感謝!