我使用HFileOutputFormat將CSV文件批量加載到hbase表中。我只使用job.setNumReduceTasks(0)映射和減少任務。但是我可以看到reducer運行在這個工作中,這個reducer是因爲HFileOutputFormat而啓動的嗎?
以前我使用TableOutputFormat來完成同一個作業,其中從不運行Reducer。我最近重構了map任務以使用HFileOutputFormat,但是現在在發生這種變化之後,我可以看到reducer正在運行。HFileOutputFormat啓動reducer嗎?
其次我得到了以下錯誤的減速器,我以前沒有得到與TableOutputFormat,這也與HFileOutputFormat?
錯誤:拋出java.lang.ClassNotFoundException:com.google.common.base.Preconditions
謝謝!有效! :) – RGC
正在嘗試優化我的MR工作,使用你的提示在這[post](http://stackoverflow.com/questions/8750764/what-is-the-fastest-way-to-bulk-load-data-into -hbase-programmatically)。我只有一個map任務,它讀取一個csv文件並將每行(記錄)加載到hbase表中。性能有所提高,但我仍然認爲它不夠高效,因爲它需要大約10分鐘才能載入300萬條記錄。你提到你能夠在一分鐘內加載2.5M。我已經預分割了表區域。還有什麼我可以做到最大效率?壓縮數據?請告知 – RGC
我試圖壓縮mapoutput以及hfiles。這種表現可以改善性能。請教關於我可能會丟失或需要在一分鐘內加載數百萬數據的問題。請注意,除了形成一個鍵並調用context.write(不可變更,放)以外,我不做任何繁重的處理。我注意到地圖在3-4分鐘左右完成,還原器(由HFileOutputFormat調用)花費了大約6-7分鐘,完成的堆積像flash一樣完成。 – RGC