6Map器在sqoop中默认创建?

rlcwz9us  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(293)

我一直认为如果你不具体说明 -m a中的属性 sqoop import ,默认情况下,将创建4个Map器。但是,在我的例子中,6个Map器正在创建。有人能解释一下吗?这是sqoop命令:

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

employee表有3列。员工姓名、年龄和入职日期。在hdfs中,还有6个Map部件文件0001、0002。。。。0005已创建。

wwtsj6pe

wwtsj6pe1#

4是建议的Map器数量的默认值。

因此,运行squoop命令而不建议使用多个Map器,应该相当于运行squoop命令而建议使用4个Map器。
但是,该建议可能会被忽略,如果您不给出建议,您已经可以看到该建议可以被忽略,但是从这里可以看到,如果您指定了数字,该建议也可以被忽略。

20jt8wwn

20jt8wwn2#

首先,建议对整型列进行拆分。
根据规范,

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

不能保证sqoop会生成与您在中提到的相同数量的Map器 -m <number of mappers> 有关详细信息,请参见代码。代码的有用部分:

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

如果你使用 --verbose 在查询的末尾。您将看到执行拆分的边界值。
如果按整数值拆分,我确信在这种情况下只能运行4个Map器。

相关问题