我始终认为,如果您未在-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。
答案 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)
所以运行一个squoop命令而不建议使用多个映射器,应该相当于运行一个带有4个映射器的建议的squoop命令。
但是,建议可能会被忽略,如果您不提供建议,您已经可以看到该建议可以被忽略,但是可以看到here,如果您 指定数字。