Sqoop导入数据内存溢出
利用sqoop
可以将RDBMS
的数据导入到HDFS
上,但是在使用sqoop
的时候,以mysql
数据导入到hive
数据为例,如果不注意设置MapReduce
的资源,是会出现一个叫做GC limit xxxxx
的错误的。
如下面的脚本
sqoop import \
--connect jdbc:mysql://localhost:3306/your_database \
--username root \
--password 123456 \
--target-dir /user/hive/warehouse/xxxx/xxx \
--hive-import \
--hive-database hive_database \
--hive-table hive_tableName\
--as-parquetfile \
--null-string '\\N' \
--null-non-string '\0' \
--fields-terminated-by '\001' \
--table mysql_tableName \
--fetch-size 1000
运行这个命令的时候,程序在yarn中申请到了5GB
(这个因环境而异)的内存,然后,任务失败了,报出一个GC limit
的错误
当出现这样的错误的时候,很显然就是sqoop
在进行数据传输的过程当中,因为内存不足,引发了错误。
那么,如何让sqoop
在创建一个