Apache Sqoop Cookbook 英文版-翻译学习!!
更多信息https://blue-shadow.top/
问题
sqoop 是一个强大的工具,能够很好的处理大量的数据传输,但如何使Sqoop更快。
解决方案
对于一些数据库可以通过使用 参数 --direct 以利用直连的优势。
sqoop import \
--connect jdbc:mysql://msyql.example.com/sqoop \
--username sqoop \
--table cities \
--direct
讨论
直接模式委托不是使用 JDBC 接口来传输数据, 而是将数据传输到数据库供应商提供的本机实用程序。以Mysql为例,
mysqldump和mysqlimport被用于从获取数据或会写数据。对于postgresql,sqoop利用pg_dump的优势来导入数据。使用本地应用工具能够
显著的提高性能,因为它们被优化以提供最佳的传输速度,同时减轻数据库服务器的负担。但有几个限制, 来使用此快速导入,第一:并不是
所有数据库都用可用的本地工具;对于直连这种模式并不是对所有的数据库都有效,目前sqoop只支持对mysql好postgresql的直连.
因为所有数据传输操作都是在生成的 MapReduce 作业内执行的,而且由于数据传输在直连工具的应用程序作用下会延迟数据传输,所以需要
确保所使用的本地应用程序在Hadoop TaskTracker节点上有效,举例来说:在使用Mysql时,在每个TaskTracker服务器上需要同时安装mysqlimport和
mysqldump
直接模式的另一个限制是不支持所有参数,作为该本机实用程序通常产生文本输出, 二进制格式如 SequenceFile 或 Avro将无法工作。
此外, 在以下几种情况下: 自定义转义字符、类型映射、列和行分隔符或 NULL 替换字符串的参数都可能无法被支持。
网友评论