据我所知,从Apache Spark你可以通过使用spark历史UI找出RDD内部的依赖关系,如下所示:
从RDD的DAG我知道:在完成RDD编号33,34和35之前,RDD编号36无法启动。
我的问题是:如何在特定阶段的所有任务中找到依赖关系?
从spark事件日志和Spark历史服务器UI我可以得到任务的开始和结束时间,但我无法找到如何在任务之间获得依赖关系。
答案 0 :(得分:0)
你几乎已经回答了你的问题。您可以使用RDD
检查API
依赖项,Spar todebug String也可以检查RDD Dependencies
。请检查spark-rdd-dependencies。
在高级别,当在RDD上调用任何操作时,Spark会创建DAG并将其提交给DAG调度程序。
在高级别,有两种转换可以应用于RDD,即窄转换和广泛转换。宽变换基本上导致阶段边界。
缩小转换 - 不要求跨分区对数据进行混洗。例如,地图,过滤等。
广泛转型 - 要求对数据进行洗牌,例如reduceByKey等。
Advanced Apache Spark- Sameer Farooqui (Databricks) check this its best
答案 1 :(得分:0)
如何在特定阶段的所有任务中找到依赖关系?
很简单 - 单个阶段的任务总是独立的。它们只能依赖于另一个阶段的结果。