Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用KeyOrdering和Aggregator创建Shuffledd_Apache Spark - Fatal编程技术网

Apache spark 使用KeyOrdering和Aggregator创建Shuffledd

Apache spark 使用KeyOrdering和Aggregator创建Shuffledd,apache-spark,Apache Spark,我正在尝试解决与此问题相关的RDD的不确定状态: 问题是我在管道中有几个重新分区,这些重新分区导致RDD从确定性到无序再到不确定。不确定RDD上的任何操作都无法重试,因此,如果这些状态下的阶段上的执行器出现问题,则作业很容易失败 我已经通读了计算确定性状态的RDD代码: 基于这种逻辑,如果我可以使用OrderingKey和Aggregator创建一个shuffleddd,那么DAG会将RDD解释为确定性的,而不关心导致分区无序的上游分区 流在重新分区之间使用Long键执行groupByKey操

我正在尝试解决与此问题相关的RDD的不确定状态:

问题是我在管道中有几个重新分区,这些重新分区导致RDD从确定性到无序再到不确定。不确定RDD上的任何操作都无法重试,因此,如果这些状态下的阶段上的执行器出现问题,则作业很容易失败

我已经通读了计算确定性状态的RDD代码:

基于这种逻辑,如果我可以使用
OrderingKey
Aggregator
创建一个
shuffleddd
,那么DAG会将RDD解释为确定性的,而不关心导致分区无序的上游分区

流在重新分区之间使用
Long
键执行
groupByKey
操作,这可能会产生带有聚合器(累积到缓冲区)和键排序的ShuffleDDS,但这似乎没有发生。如果我使用
groupByKey
,那么我会得到一个带有
聚合器的
ShuffleRDD
。如果我使用
sortwithinjections
,那么我会得到一个带有
键排序的
ShuffleRDD
。如果我按groupByKey排序,我会得到一个围绕
ShuffleRDD
MapPartitionsRDD
(恰好按键排序)

ShuffleRDD
是一个DeveloperAPI类,所以我不知道直接构造一个类并给它排序和分组实例是否安全。这种链也发生在一些地方,所以我不太喜欢在任何地方都将groupByKey更改为确定性groupByKey,只是为了获得确定性行为

我正在寻找任何人谁可以推荐一个很好的方法来恢复RDD的决定论后,它已经通过了重新分区

更新

检查点“起作用”是因为RDD变得具有确定性,但其代价是增加了复制存储上的负载。具有确定性分区器和完全排序记录的RDD是确定性的,即使逻辑无法识别这一点。计算确定性级别的代码通过检查ShuffleDDD上是否存在OrderingKey和Aggregator来确认这一点。我的问题是我找不到任何方法来创建一个使用公共API的API。PairRDDFunctions和OrderedRddFunctions似乎都没有这样做的方法。

此链接为您提供指导

总结:。。。为了解决这个问题,我们需要将RDD输入到ALS 符合确定性最简单的方法是 检查RDD。因为检查点将RDD保存到可靠的数据库中 像HDFS这样的存储,重新运行检查点RDD只是读取所需的数据 从磁盘返回分区


RDD是遗留的,所以当我看到你的第一个链接时,也许你不应该太担心。你解决了btw吗?对不起,我应该澄清一下,在我的情况下,检查点是有害的,因为它在HDFS中生成了很多小文件,并导致一个不知所措的namenode。我不确定这是否与你可以重新分区相关。