gpt4 book ai didi

java - 在 Java Apache Spark 中对齐分区中的元素数量

转载 作者:行者123 更新时间:2023-12-01 06:06:46 24 4
gpt4 key购买 nike

我有两个 JavaRDD<Double>rdd1rdd2我想评估一些相关性,例如与 Statistics.corr() .这两个 RDD 是通过许多转换和 Action 生成的,但在过程结束时,它们都具有相同数量的元素。我知道必须遵守两个条件才能评估相关性,它们与 zip 相关(据我所知)。相关函数中使用的方法。条件是:

  • RDD 必须被分割成相同数量的分区
  • 每个分区必须具有相同数量的元素

  • 此外,根据 Spark 文档,我在 RDD 上使用了保留排序的方法,因此最终的相关性将是正确的(尽管这不会引发任何异常)。现在,问题是即使我能够保持分区数量一致,例如使用代码
    JavaRDD<Double> rdd1Repatitioned = rdd1.repartition(rdd2.getNumPartitions());

    我不知道该怎么做(以及什么给了我异常(exception))是控制每个分区中的条目数。我找到了一种解决方法,目前正在运行,即重新初始化我想要关联的两个 RDD
        List<Double> rdd1Array = rdd1.collect();
    List<Double> rdd2Array = rdd2.collect();

    JavaRDD<Double> newRdd1 = sc.parallelize(rdd1Array);
    JavaRDD<Double> newRdd2 = sc.parallelize(rdd2Array);

    但我不确定这能保证我的一致性。其次,在某些情况下,它在计算方面可能非常昂贵。有没有办法控制每个分区中的元素数量,或者通常在两个或多个 RDD 中重新对齐分区(我或多或少知道分区系统的工作原理,我知道这可能从分发点开始很复杂看法)?

    最佳答案

    好的,这对我有用:

    Statistics.corr(rdd1.repartition(8), rdd2.repartition(8))

    关于java - 在 Java Apache Spark 中对齐分区中的元素数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37815694/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com