当前位置: 首页 > 面试题库 >

用mapreduce怎么处理数据倾斜问题?

卢开济
2023-03-14
本文向大家介绍用mapreduce怎么处理数据倾斜问题?相关面试题,主要包含被问及用mapreduce怎么处理数据倾斜问题?时的应答技巧和注意事项,需要的朋友参考一下

解答:

数据倾斜:map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完,此称之为数据倾斜。

用hadoop程序进行数据关联时,常碰到数据倾斜的情况,这里提供一种解决方法。

自己实现partition类,用key和value相加取hash值:

方式1:

源代码:

public int getPartition(K key, V value,int numReduceTasks) {
	return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;
  }

修改后

public int getPartition(K key, V value,int numReduceTasks) {
	return (((key).hashCode()+value.hashCode()) & Integer.MAX_VALUE) % numReduceTasks;
}

方式2:

public class HashPartitioner<K, V> extends Partitioner<K, V> {

    private int aa= 0;

      /** Use {@link Object#hashCode()} to partition. */

      public int getPartition(K key, V value,
    int numReduceTasks) {

    return (key.hashCode()+(aa++) & Integer.MAX_VALUE) % numReduceTasks;
 }

 类似资料:
  • 打开数据        在“倾斜摄影”菜单栏中点击“打开数据”,找到本地倾斜摄影索引(lfp)文件存放位置,点击打开osgb转换后的lfp格式倾斜摄影数据文件(具体转换步骤见“倾斜摄影”菜单栏中的“数据转换”),该lfp文件包含三维模型所在的经度、纬度、高度值,便于倾斜摄影三维模型在地球上进行定位。支持倾斜摄影三维模型格式为smart3d生成的osgb格式。        打开后数据效果如下图。可

  • 例如,我有一个很大的字流,想要数每一个字。问题是这些话是歪斜的。这意味着某些词的使用频率会很高,而其他大多数词的使用频率却很低。在storm中,我们可以使用以下方法来解决这个问题。首先对流进行洗牌分组,在每个节点的一个窗口时间内计数本地字,最后更新计数到累积结果。从我的另一个问题中,我知道Flink只支持键控流上的window,否则window操作不会并行。 我的问题是在Flink中有没有一个好的

  • 本文向大家介绍问题:如果数据有问题,怎么处理;相关面试题,主要包含被问及问题:如果数据有问题,怎么处理;时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1.上下采样平衡正负样例比;2.考虑缺失值;3.数据归一化 解析:发散问题需要自己展现自己的知识面      

  • 添加地标        其使用原理同6.1.1 模型平移        在LSV中可以对模型进行平移操作,一般用于将目标模型进行位置调整,或者将其高程进行调整(有些模型加载出来可能贴于地标所以无法显示出来,可通过调整高程使其显示)。        先选择自己所要平移模型的图层之后点击选择模型所平移的参考点的起点与终点,并且可对效果进行预览:        之后同样的在选择所需要平移模型的图层后可对

  • 添加地标        其使用原理同6.1.1 模型平移        在LSV中可以对模型进行平移操作,一般用于将目标模型进行位置调整,或者将其高程进行调整(有些模型加载出来可能贴于地标所以无法显示出来,可通过调整高程使其显示)。        先选择自己所要平移模型的图层之后点击选择模型所平移的参考点的起点与终点,并且可对效果进行预览:        之后同样的在选择所需要平移模型的图层后可对

  • 使用Spark Dataset/DataFrame联接时,我面临长时间运行且OOM作业失败的问题。 以下是输入: ~10个不同大小的数据集,大部分是巨大的( 经过一番分析,我发现作业失败和缓慢的原因是歪斜键:当左侧有数百万条记录时,用连接键。 我用了一些蛮力的方法来解决这个问题,这里我想和大家分享一下。 如果您有更好的或任何内置的解决方案(针对常规Apache Spark),请与他人分享。