Pig Script在Tez上抛出Out Of Memory异常,但在MapReduce上却能正常工作。

问题描述 投票:1回答:1

下图所示的Pig(使用Tez执行引擎)脚本会抛出Out Of Memory Exception,在一个4节点集群上有一个15GB的雇员表。当执行引擎改为MapReduce时,它可以正常工作。

pig -F -x tez -useHCatalog<<EOF
EMP_TMP = LOAD 'employee' USING org.apache.hive.hcatalog.pig.HCatLoader();
EMP = foreach EMP_TMP generate emp_id, log_time , dept_id, 10 as emp_type;
EMP_VALID =  filter EMP by (ToDate(ToString(log_time, 'yyyy-MM-dd'),'yyyy-MM-dd') >= ToDate('2015-09-01','yyyy-MM-dd') and ToDate(ToString(log_time, 'yyyy-MM-dd'),'yyyy-MM-dd') <= ToDate('2015-09-30','yyyy-MM-dd'));
STORE EMP_VALID INTO 'EMP_VALID' USING org.apache.hive.hcatalog.pig.HCatStorer();
EOF

错误信息是

2015-11-13 11:34:06,113 [PigTezLauncher-0] INFO  org.apache.tez.client.TezClient - Submitting dag to TezSession, sessionName=PigLatin:DefaultJobName, applicationId=application_1447412577542_0027, dagName=PigLatin:DefaultJobName-0_scope-0
grunt> 2015-11-13 11:34:07,953 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 6016: Out of memory.  

表的大小与集群内存和存储相比太小了。Tez中有没有什么内存参数需要特别配置?

hadoop apache-pig hcatalog apache-tez
1个回答
0
投票

我能够通过增加pig堆大小来解决这个问题,pig中的默认值非常小。

export PIG_HEAPSIZE=8192
© www.soinside.com 2019 - 2024. All rights reserved.