Hadoop 映射程序执行时间之间的巨大差异

Hadoop 映射程序执行时间之间的巨大差异,hadoop,mapreduce,yarn,sqoop,Hadoop,Mapreduce,Yarn,Sqoop,我尝试用sqoop导入一个表;我使用4个绘图器。 问题是映射程序之间的执行时间存在巨大差异。 有的少于10分钟,有的超过一小时。 你能解释一下原因吗?如何优化我的导入? 看起来,地图绘制者之间的数据分布不均匀可能是造成这种差异的原因 我认为您可以检查表的主键是什么,以及同一个表的最小值和最大值的范围是什么。因为基于范围,数据将分布在映射器中。并检查最后两个映射器是否导入了更多数据。尝试使用--split limit参数优化导入。如果创建的拆分的大小大于此参数中指定的大小,则拆分的大小将调整为适合

我尝试用sqoop导入一个表;我使用4个绘图器。 问题是映射程序之间的执行时间存在巨大差异。 有的少于10分钟,有的超过一小时。 你能解释一下原因吗?如何优化我的导入?

看起来,地图绘制者之间的数据分布不均匀可能是造成这种差异的原因


我认为您可以检查表的主键是什么,以及同一个表的最小值和最大值的范围是什么。因为基于范围,数据将分布在映射器中。并检查最后两个映射器是否导入了更多数据。

尝试使用
--split limit
参数优化导入。如果创建的拆分的大小大于此参数中指定的大小,则拆分的大小将调整为适合此限制,拆分的数量将根据此限制而更改。这会影响映射器的实际数量,并导致映射器更加平衡。

参数<代码>--拆分限制必须采用<代码>--num映射器的值。如果根据提供的<代码>--num映射器参数计算的拆分大小超过<代码>--拆分限制参数,则将计算映射器的实际数量增加。如果
--split limit
参数中指定的值为0或负值,则该参数将被完全忽略,并根据映射器的数量计算分割大小。并且分割限制仅支持整数和日期列?是,如文档中所述:
这仅适用于整数和日期列。日期或时间戳字段以秒为单位计算。
请参阅答案。也许解决方案3可以帮助你