首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache Stage缺少父级

Apache Stage缺少父级
EN

Stack Overflow用户
提问于 2015-04-23 04:38:11
回答 1查看 4.8K关注 0票数 4

在Apache Spark上运行我的迭代程序时,我偶尔会收到以下消息:

代码语言:javascript
运行
复制
INFO scheduler.DAGScheduler: Missing parents for Stage 4443: List(Stage 4441, Stage 4442)

我猜这意味着它需要计算父RDD -但我不是100%确定。我不只得到其中的一个,我结束了100个,如果不是数千个的话-它完全减慢了我的程序,并且另一个迭代在10-15分钟内不会完成(它们通常需要4-10秒)。

我使用StorageLevel.MEMORY_AND_DISK_SER在每次迭代中cacheRDD。下一次迭代将使用此RDD。因此,RDD的谱系变得非常庞大,因此需要缓存。但是,如果我正在缓存(并溢出到磁盘),父级怎么会丢失?

EN

回答 1

Stack Overflow用户

发布于 2015-06-09 07:05:44

我引用Cloudera中的Imran Rashid:

如果阶段是随机映射阶段,则跳过这些阶段是正常的,因为这些阶段会被多次读取。例如,这是我之前写的一个小示例程序来演示这一点:"d3“不需要重新洗牌,因为每次使用相同的分割器读取它。因此,以这种方式跳过各个阶段是一件好事:

代码语言:javascript
运行
复制
val partitioner = new org.apache.spark.HashPartitioner(10)
val d3 = sc.parallelize(1 to 100).map { x => (x % 10) -> x}.partitionBy(partitioner)
(0 until 5).foreach { idx =>
val otherData = sc.parallelize(1 to (idx * 100)).map{ x => (x % 10) -> x}.partitionBy(partitioner)
println(idx + " ---> " + otherData.join(d3).count())
} 

如果您运行此命令,如果您查看UI,您将看到除了第一个作业之外的所有作业都有一个被跳过的阶段。您还将在日志中看到以下内容:

15/06/08 10:52:37信息DAGScheduler:最终阶段的父母:列表(阶段12,阶段13)

15/06/08 10:52:37信息DAGScheduler:缺少父母:列表(阶段13)

诚然,这并不是很清楚,但这在某种程度上向你表明,DAGScheduler首先创建了阶段12作为必要的步骤,然后后来改变了主意,意识到阶段12所需的一切都已经存在,所以没有什么可做的。

有关电子邮件来源,请参阅以下内容:http://apache-spark-developers-list.1001551.n3.nabble.com/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29808309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档