hadoop - Sqoop 默认创建 6 个映射器?

标签 hadoop sqoop hadoop2 mapper bigdata

我一直认为,如果您不在sqoop import 中指定-m 属性,默认情况下会创建4 个映射器。但是,在我的例子中,正在创建 6 个映射器。有人可以解释一下吗? 这是 sqoop 命令:

sqoop import --connect jdbc:mysql://localhost/cloudera --target-dir hdfsout --split-by employeename  --username root --password XXXXX --table employee

员工表有 3 列。员工姓名、年龄和入职日期。 在 hdfs 中,也创建了 6 个 map 部分文件 0001、0002 .... 0005。

enter image description here

最佳答案

首先,建议对整数列进行拆分。

根据 code ,

LOG.warn("You are strongly encouraged to choose an integral split column.");

不能保证 sqoop 会生成与您在 -m <number of mappers> 中提到的相同数量的映射器

参见 code了解详情。有用的部分代码:

// Use this as a hint. May need an extra task if the size doesn't
// divide cleanly.
int numSplits = ConfigurationHelper.getConfNumMaps(conf);

如果您使用 --verbose在查询结束时。您将看到完成拆分的边界值。

如果您将它拆分为整数值,我确信在这种情况下只会运行 4 个映射器。

关于hadoop - Sqoop 默认创建 6 个映射器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38041429/

相关文章:

java - 如何在 CDH 上查看 Avro 版本?

hadoop - 我怎样才能知道 hbase 表中的所有列?

mysql - 是否可以在不使用mysql applier的情况下将mysql与hadoop连接?

hadoop - 线程 “main” org.apache.hadoop.mapred.InvalidInputException中的异常:输入路径不存在:

hadoop - Hive中的数据(单引号和双引号)不匹配

java - Mapper 和 Reducer 是 Hadoop 版本 2 中的接口(interface)吗?

java - 使用JAVA从HDFS中的一个目录复制到HDFS中的另一个目录

hadoop - 从多个 Hive 表中获取记录而无需连接

hadoop - mysql的sqoop导入问题

hadoop - sqoop 导入大量 NULL 行