使用sqoop把oracle 中的表 导入到hdfs 上,当数据量很小时,map/reduce的过程中就会提示 java heap space error。经过查找原因和尝试,解决方法有两个:
1、 对每个运行子进程的jvm大小进行设定
修改mapred-site.xml文件,添加以下属性:
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx512M</value>
</property>
<property>
<name>mapred.reduce.child.java.opts</name>
<value>-Xmx512M</value>
</property>
<property>
<name>mapred.map.child.java.opts</name>
<value>-Xmx512M</value>
</property>
2、 增大map数量
通过sqoop -m 选项指定更多的map。通过更多的map,降少每个子进程占用的heap space,避免超出hadoop设置的java heap space 大小
sqoop ... -m <map 数量>