如何--direct模式在sqoop中工作?

时间:2017-06-29 00:59:26

标签: mysql hadoop hdfs sqoop sqoop2

sqoop 使用表主键或/** * TestClass.hpp */ class TestClass { int a; int b; TestClass(std::vector<int> values); }; /** * TestClass.cpp */ TestClass::TestClass(std::vector<int> values) { if (values.size() != 2) { // Throw an error or set some defaults } this->a = values[0]; this->b = values[1]; } 从RDBMS转移到HDFS,我认为默认的映射器数量为4。但是,通过--split-by <columns>,可以在不使用映射器的情况下更快地进行传输。我的问题是如果没有使用mapper,那么Sqoop如何处理Hadoop框架中的传输?

2 个答案:

答案 0 :(得分:1)

根据sqoop docs

  

MySQL Direct Connector允许使用mysqldumpmysqlimport工具功能,而不是SQL选择和插入,更快地导入和导出MySQL。

通常,它比通过JDBC使用多个映射器的运行范围查询更快。

答案 1 :(得分:0)

使用--direct参数在内部使用mysqldump工具从MySQL导入数据的Sqoop。 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.html https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html