映射器执行时间之间的巨大差异
Posted
技术标签:
【中文标题】映射器执行时间之间的巨大差异【英文标题】:huge difference between mappers execution time 【发布时间】:2018-05-02 13:39:28 【问题描述】:我尝试用 sqoop 导入一个表;我使用 4 个映射器。 问题是映射器之间的执行时间存在巨大差异。 有些不到 10 分钟,有些则超过一小时。 你能解释一下为什么吗?以及如何优化我的导入?
【问题讨论】:
【参考方案1】:看起来映射器之间的数据分布不均匀可能是造成这种差异的原因。
我认为您可以检查表的主键是什么,以及最小值和最大值的范围是什么。因为根据范围,数据将分布在映射器中。并检查最后两个映射器是否导入了更多数据。
【讨论】:
【参考方案2】:尝试使用--split-limit
参数来优化您的导入。如果创建的拆分的大小大于此参数中指定的大小,则拆分将调整大小以适应此限制,并且拆分的数量将据此更改。这会影响映射器的实际数量并导致更平衡的映射器。
【讨论】:
参数--split-limit
必须取--num-mappers
的值?
如果根据提供的--num-mappers
参数计算的拆分大小超过--split-limit
参数,则映射器的实际数量将增加。如果--split-limit
参数中指定的值为0或负数,则完全忽略该参数,根据mapper个数计算分割大小。
并且拆分限制仅支持 Integer 和 Date 列?
是的,如文档中所述:This only applies to Integer and Date columns. For date or timestamp fields it is calculated in seconds.
查看答案***.com/a/37389134/7109598。也许解决方案#3可以帮助你以上是关于映射器执行时间之间的巨大差异的主要内容,如果未能解决你的问题,请参考以下文章