我在AWS EMR上使用sqoop从hive导出 2亿条记录到Oracle数据库。我尝试了--batch
和--num-mappers
参数,这些参数已经帮助提高了效果。
调整-Dsqoop.export.statements.per.transaction
和-Dsqoop.export.records.per.statement
会有帮助吗?
期望有关其他调整参数的建议,以提高出口吞吐量。
答案 0 :(得分:1)
您是否尝试包含--direct
选项?我已经看到这会增加Oracle导入的性能,具体取决于您的oracle版本。
答案 1 :(得分:1)
调整
-Dsqoop.export.statements.per.transaction
和-Dsqoop.export.records.per.statement
有帮助吗?
是。请参考此链接: https://community.hortonworks.com/articles/70258/sqoop-performance-tuning.html
在某一点之后,停止调整
“sqoop.export.records.per.statement
”(正如您可能遇到的那样)
java.lang.OutOfMemoryError
)并开始调整
“sqoop.export.statements.per.transaction
”。
导出性能取决于并行度,因此增加 映射器的数量,并看看性能如何扩大。
使用中提到的分区 https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_partitioning 虽然很旧,但在此链接中可以获得相同的体验 https://mail-archives.apache.org/mod_mbox/sqoop-user/201406.mbox/%3CCFCDC24C.A85D%25brenden.cobb@humedica.com%3E
尝试每种方法并采用适合您的方法。