我正在使用Sqoop 1.4.6将数据从MySQL导入到Hive,使用import-all-tables选项。结果是好的,但导入过程本身很慢。例如,其中一个数据库包含40-50张表,远远低于100万行,并且需要大约25-30分钟才能完成。经过调查,似乎大部分时间都花在初始化每个导入表的Hive上。在同一个数据库上测试一个普通的mysqldump在下在1分钟内完成。所以问题是如何减少初始化时间,如果是这种情况,例如使用单个Hive会话?使用import-all-tables优化Sqoop数据从MySQL导入到Hive
进口的命令是:
sqoop import-all-tables -Dorg.apache.sqoop.splitter.allow_text_splitter=true --compress --compression-codec=snappy --num-mappers 1 --connect "jdbc:mysql://..." --username ... --password ... --null-string '\\N' --null-non-string '\\N' --hive-drop-import-delims --hive-import --hive-overwrite --hive-database ... --as-textfile --exclude-tables ... --warehouse-dir=...
更新:
Sqoop版本:1.4.6.2.5.3.0-37
蜂巢版本:1.2.1000.2.5.3.0 -37
可能涉及到:
https://issues.apache.org/jira/browse/HIVE-10319
它l使用ooks like I can not use'--direct' with'--hive-drop-import-delims',但会尝试你的其他建议,然后找回... –
几乎相同的结果;每个数据库大约25分钟。我也试着用总行数不同的数据库,但数据量大致相同,所花费的总时间相当接近。似乎每个表有一些不变的时间,这与其中的数据量无关。 –
您可以尝试将mapper内存从当前值增加到更高的数字吗?:'sqoop import-all-tables -D mapreduce.map.memory.mb = 2048 -D mapreduce.map.java.opts = -Xmx1024m' –