我的pyspark应用程序的性能缓慢。我的功能涉及5个数据范围,并在内部有一些加入和协议。当我只调用此功能一次时,它会成功运行。但是,当我不止一次地调用它时,在过程中(仅更改参数,但数据量相同(,它不会终止。它在我无法识别的某个部分停止。我的问题是:如何调试我的火花应用程序以识别此瓶颈?
我通常使用以下步骤进行测试和对SPARK应用程序进行故障排除
-
master = local
使用小型数据集使用
master=local
执行应用程序/管道。使用此选项,我可以在本地使用我喜欢的IDE运行Spark应用程序桌面,也可以使用调试选项。
spark = SparkSession.builder.appName("MyApp").config("master", "local").getOrCreate()
- Demoly-Mode客户端
解决问题并在本地工作,将应用程序和部署应用程序与小型数据集以
client
模式执行并执行。如果有的话,我们可以在控制台中看到任何错误消息/stacktraces等。- demoly-mode cluster
现在以
cluster
模式执行,具有大/实际数据集并更新Spark性能的设置,例如执行者,执行者内存等。