mysql—如何—直接模式在sqoop中工作?

1cosmwyk  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(297)

sqoop使用表主键或 --split-by <columns> 从rdbms转换到hdfs,我认为默认的Map器数量是4个。然而,通过 --direct 无需使用Map器,传输速度会更快。我的问题是,如果没有使用Map器,那么sqoop如何处理hadoop框架中的传输?

g6ll5ycj

g6ll5ycj1#

根据sqoop文件,
mysql direct connector允许使用 mysqldump 以及 mysqlimport 工具功能而不是sql选择和插入。
通常,它比通过jdbc使用多个Map器运行范围查询更快。

ndasle7k

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

相关问题