0
点赞
收藏
分享

微信扫一扫

org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

Error: org.apache.hive.service.cli.HiveSQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

这个问题是hive进行map join 而机器内存不够导致

map join会把join中的小表读到内存中,然后再对比较大的表格进行map操作。join就发生在map操作的时候,每当扫描一个大的table中的数据,就要去去查看小表的数据,哪条与之相符,继而进行连接。这里的join并不会涉及reduce操作。map端join的优势就是在于没有shuffle。

但我们机器内存不够,所以悲剧了。

修改这个文件下的参数可以把map join 关闭,使用common join

org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask_hive

common join也叫做shuffle join,reduce join操作。这种情况下生再两个table的大小相当,但是又不是很大的情况下使用的。具体流程就是在map端进行数据的切分,一个block对应一个map操作,然后进行shuffle操作,把对应的block shuffle到reduce端去,再逐个进行联合,这里优势会涉及到数据的倾斜,大幅度的影响性能有可能会运行speculation,这块儿在后续的数据倾斜会讲到。因为平常我们用到的数据量小,所以这里就不具体演示了。

举报

相关推荐

0 条评论