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框架中的传输?
答案 0 :(得分:1)
根据sqoop docs,
MySQL Direct Connector允许使用
mysqldump
和mysqlimport
工具功能,而不是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