Scala 在spark中并行化和重新分配100万个数字时执行受阻

Scala 在spark中并行化和重新分配100万个数字时执行受阻,scala,hadoop,apache-spark,rdd,Scala,Hadoop,Apache Spark,Rdd,我是斯卡拉的新手。在这一点上我很固执 参见简单示例: 我有320 gb的RAM和4个节点。但如果我在一百万个数据上执行下面的代码。然后在同一点上执行失败 matchingRowsPOI包含一百万个数字的数组 使用下面的代码,我正在创建配对。比如(1,2)、(1,3)(2,3)等等 val totalPairsForDistrict1 = sc.parallelize(matchingRowsPOI,200).flatMap(x => { matchingRowsPOI.filt

我是斯卡拉的新手。在这一点上我很固执

参见简单示例: 我有320 gb的RAM和4个节点。但如果我在一百万个数据上执行下面的代码。然后在同一点上执行失败

matchingRowsPOI包含一百万个数字的数组

使用下面的代码,我正在创建配对。比如
(1,2)、(1,3)(2,3)
等等

val totalPairsForDistrict1 = sc.parallelize(matchingRowsPOI,200).flatMap(x => {
      matchingRowsPOI.filter(_ > x).map((x, _))
    }).repartition(200)

totalPairsForDistrict1 .count
但若我执行这段代码,那个么执行就会在同一个地方停止好几个小时。 我已经在UI上检查过了。它根本不处理。我不明白为什么会这样

是因为内存不足以执行此操作还是什么

请帮帮我


提前谢谢。

这对我来说是一个非常关键的问题。有人能解释一下为什么会发生这种情况。根据您的代码,没有实际执行转换的操作。您需要对totalPairsForDistrict1调用一个操作,例如collect、count、saveAsTextFile。@tauitdnmd抱歉,我忘了在代码中添加它。请检查更新的代码。您正在使用带200分区的并行化,然后再次使用可能导致问题的重新分区。请尝试通过删除重新分区来运行。