Sqoop默认创建了6个映射器?

时间:2016-06-26 17:51:36

标签: hadoop sqoop hadoop2 mapper bigdata

我始终认为,如果您未在-m中指定sqoop import属性,则默认情况下会创建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个地图部件文件0001,0002 .... 0005。

enter image description here

2 个答案:

答案 0 :(得分:1)

首先,建议拆分整数列。

根据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个映射器。

答案 1 :(得分:0)

4是SUGGESTED映射器的默认值。

所以运行一个squoop命令而不建议使用多个映射器,应该相当于运行一个带有4个映射器的建议的squoop命令。

但是,建议可能会被忽略,如果您不提供建议,您已经可以看到该建议可以被忽略,但是可以看到here,如果您 指定数字。