oracle里面导入一张大款表,字段数非常多,而且有很多长文本,这些文本都需要用到,导入的时候报错OutOfMemoryError,内存溢出错误。
解决办法之一是增加内存,目前情况来说不显示,于是我采用另一种方法:减小
cache到内存的记录条数,即使用–fetch-size选项调整fetchSize。fetchSize默认值为1000,这里我们把它调小到200:
sqoop import \
--connect "jdbc:oracle:thin:@10.24.1.180:1521/orcl" \
--username system \
--password Oracle \
--table sqp_test \
--fetch-size 200 \
--null-string '\\N' \
--null-non-string '\\N' \
--hive-drop-import-delims \
--split-by id \
--hive-import \
--hive-overwrite \
--hive-database default \
--hive-table sqp_test_txt
对于大多数表来说默认的fetchSize根本不能充分利用数据库的性能,可以根据表的实际情况适当调整–fetch-size,提升数据库访问效率,从而缩短sqoop任务执行时间。