我有一个Spark应用程序,其中有4-5个工作。我知道哪项工作需要更长的时间,因为很明显。这项工作具有这样的DAG:
wholeTextFiles-> mapToPair-> flatMapToPair->重新分区-> mapPartitionsToPair-> map-> saveAsTextFile
但是,由于整个DAG仅在SaveAsTextFile操作中计算,因此我不知道该转换需要花费更长的时间。
如何确定应用程序的哪一部分是瓶颈?
您认为,在每次转换后使用收集是一个好主意(我可以从Web UI跟踪运行时)?如果是,我是否应该在每次运行中仅使用一个收集并测量不同转换的运行时,还是可以在每次转换后收集并在一次运行中测量它们的运行时间?