升级到JDK 7后,Sort出现兼容性问题的解法。

在昨天的文章 TimSort in Java 7 中,我们讨论了升级到JDK 7后,Collection的sort方法,出现兼容性问题的原因。

究其根本,还是我们写的compare函数不够严谨。

本文主要针对Hadoop、Hive,从系统的部署、配置层面提出一些解法。

1、Hive

在执行前,指定JVM选项。

set mapreduce.map.java.opts=-Xmx2000m -Djava.util.Arrays.useLegacyMergeSort=true
set mapreduce.reduce.java.opts=-Xmx2000m -Djava.util.Arrays.useLegacyMergeSort=true;

2、Hadoop

修改mapred-site.xml,增加选项。

<property>
  <name>mapreduce.map.java.opts</name>
  <value>-Xmx2000m -Djava.util.Arrays.useLegacyMergeSort=true</value>
</property>

<property>
  <name>mapreduce.reduce.java.opts</name>
  <value>-Xmx2000m -Djava.util.Arrays.useLegacyMergeSort=true</value>
</property>

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *