sqoop使用表主键或 --split-by <columns> 从rdbms转换到hdfs,我认为默认的Map器数量是4个。然而,通过 --direct 无需使用Map器,传输速度会更快。我的问题是,如果没有使用Map器,那么sqoop如何处理hadoop框架中的传输?
--split-by <columns>
--direct
g6ll5ycj1#
根据sqoop文件,mysql direct connector允许使用 mysqldump 以及 mysqlimport 工具功能而不是sql选择和插入。通常,它比通过jdbc使用多个Map器运行范围查询更快。
mysqldump
mysqlimport
ndasle7k2#
与 --direct 参数内部使用 mysqldump 从mysql导入数据的工具。mysqldump基本上是mysql内置的导出工具,也可以说它是数据库备份程序。此实用工具执行逻辑备份,生成一组sql语句,可以执行这些语句来复制原始数据库对象定义和表数据。这个 mysqldump 命令还可以生成csv、其他分隔文本或xml格式的输出。如果您的分隔符与mysqldump使用的分隔符完全匹配,那么sqoop将使用一个快速路径,将数据直接从mysqldump的输出复制到hdfs中。否则,sqoop将把mysqldump的输出解析为字段,并将它们转换为用户指定的分隔符集。这需要额外的处理,因此性能可能会受到影响。为了方便起见 --mysql-delimiters 参数将所有输出分隔符设置为与mysqldump的格式一致。这个链接有助于进一步了解它。http://archive.cloudera.com/docs-backup/sqoop/_direct_mode_imports.htmlhttpshttp://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
--mysql-delimiters
2条答案
按热度按时间g6ll5ycj1#
根据sqoop文件,
mysql direct connector允许使用
mysqldump
以及mysqlimport
工具功能而不是sql选择和插入。通常,它比通过jdbc使用多个Map器运行范围查询更快。
ndasle7k2#
与
--direct
参数内部使用mysqldump
从mysql导入数据的工具。mysqldump基本上是mysql内置的导出工具,也可以说它是数据库备份程序。此实用工具执行逻辑备份,生成一组sql语句,可以执行这些语句来复制原始数据库对象定义和表数据。这个mysqldump
命令还可以生成csv、其他分隔文本或xml格式的输出。如果您的分隔符与mysqldump使用的分隔符完全匹配,那么sqoop将使用一个快速路径,将数据直接从mysqldump的输出复制到hdfs中。否则,sqoop将把mysqldump的输出解析为字段,并将它们转换为用户指定的分隔符集。这需要额外的处理,因此性能可能会受到影响。为了方便起见
--mysql-delimiters
参数将所有输出分隔符设置为与mysqldump的格式一致。这个链接有助于进一步了解它。
http://archive.cloudera.com/docs-backup/sqoop/_direct_mode_imports.htmlhttpshttp://dev.mysql.com/doc/refman/5.7/en/mysqldump.html