2017-03-06 76 views
0

我想根據文件內部的一個鍵列將一個大文件(15GB)拆分爲多個小文件。如果我在幾千行上運行它,同樣的代碼工作正常。處理大文件時豬腳本出錯

我的代碼如下。

REGISTER /home/auto/ssachi/piggybank-0.16.0.jar; 
input_dt = LOAD '/user/ssachi/sywr_sls_ln_ofr_dtl/sywr_sls_ln_ofr_dtl.txt-10' USING PigStorage(','); 
STORE input_dt into '/user/rahire/sywr_sls_ln_ofr_dtl_split' USING org.apache.pig.piggybank.storage.MultiStorage('/user/rahire/sywr_sls_ln_ofr_dtl_split','4','gz',','); 

錯誤是如下

ERROR org.apache.pig.tools.grunt.GruntParser - ERROR 6015: During execution, encountered a Hadoop error. 

HadoopVersion 2.6.0-cdh5.8.2
PigVersion 0.12.0-cdh5.8.2

我嘗試設置以下參數假設它是一個內存問題,但它沒有幫助。

SET mapreduce.map.memory.mb 16000; 
SET mapreduce.map.java.opts 14400; 

通過上述參數設置,我得到了下面的錯誤。

Container exited with a non-zero exit code 1 

org.apache.pig.backend.executionengine.ExecException: ERROR 2997: Unable to recreate exception from backed error: AttemptID:attempt_1486048646102_2613_m_000066_3 Info:Exception from container-launch. 
+0

您是否在使用YARN?有多少內存?我前幾天在96 GB文件上運行Pig只需要很好 –

+0

是的,我正在使用YARN。 yarn.app.mapreduce.am.resource.mb

+0

好吧,這看起來不錯。我的意思是,你應該打開YARN的Web UI並檢查你的MapReduce日誌 –

回答

0

什麼是你的「關鍵列」的基數是1000?

如果它在1000中,那麼當您的Mappers由於OOME而死時,您將會收到錯誤。

瞭解每個Mapper現在爲每個文件指針保留1000個文件指針和相關緩衝區,足以佔用整個堆。

能否請您做進一步的調查

多輸出中的MapReduce其中被稱爲內部提供的映射器的日誌。 http://bytepadding.com/big-data/map-reduce/multipleoutputs-in-map-reduce/