如何找出apache spark

时间:2017-12-08 17:13:29

标签: apache-spark apache-spark-sql spark-dataframe rdd

据我所知,从Apache Spark你可以通过使用spark历史UI找出RDD内部的依赖关系,如下所示:

Details for Stage from spark history UI

从RDD的DAG我知道:在完成RDD编号33,34和35之前,RDD编号36无法启动。

我的问题是:如何在特定阶段的所有任务中找到依赖关系?

从spark事件日志和Spark历史服务器UI我可以得到任务的开始和结束时间,但我无法找到如何在任务之间获得依赖关系。

2 个答案:

答案 0 :(得分:0)

你几乎已经回答了你的问题。您可以使用RDD检查API依赖项,Spar todebug String也可以检查RDD Dependencies。请检查spark-rdd-dependencies

在高级别,当在RDD上调用任何操作时,Spark会创建DAG并将其提交给DAG调度程序。

  • DAG调度程序将运算符划分为任务阶段。阶段由基于输入数据的分区的任务组成。 DAG调度程序将运营商连接在一起。对于例如许多地图运营商可以在一个阶段进行安排。 DAG调度程序的最终结果是一组阶段。
  • 将阶段传递给任务计划程序。任务计划程序通过集群管理器(Spark Standalone / Yarn / Mesos)启动任务。任务调度程序不了解阶段的依赖关系。

在高级别,有两种转换可以应用于RDD,即窄转换和广泛转换。宽变换基本上导致阶段边界。

缩小转换 - 不要求跨分区对数据进行混洗。例如,地图,过滤等。

广泛转型 - 要求对数据进行洗牌,例如reduceByKey等。

Advanced Apache Spark- Sameer Farooqui (Databricks) check this its best

答案 1 :(得分:0)

  

如何在特定阶段的所有任务中找到依赖关系?

很简单 - 单个阶段的任务总是独立的。它们只能依赖于另一个阶段的结果。