org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
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
$KYLIN_HOME/conf/kylin_hive_conf.xml
:
<property>
<name>hive.auto.convert.join</name>
<value>false</value>//true修改為false
<description>Enables the optimization about converting common join into mapjoin</description>
</property>
common join也叫做shuffle join,reduce join操作。這種情況下生再兩個table的大小相當,但是又不是很大的情況下使用的。具體流程就是在map端進行數據的切分,一個block對應一個map操作,然后進行shuffle操作,把對應的block shuffle到reduce端去,再逐個進行聯合,這里優勢會涉及到數據的傾斜,大幅度的影響性能有可能會運行speculation,這塊兒在后續的數據傾斜會講到。因為平常我們用到的數據量小,所以這里就不具體演示了。
轉載于:https://blog.51cto.com/xiaolanlan/2068900
總結
以上是生活随笔為你收集整理的org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hive报错FAILED: Execut
- 下一篇: hive3.x异常- return co