如何识别Spark应用程序(pyspark)上的瓶颈?

时间:2019-05-17 18:32:33

标签: python amazon-web-services apache-spark pyspark amazon-emr

我的pyspark应用程序运行缓慢。 我有一个涉及5个数据帧的函数,里面有联接和聚合。 当我只调用一次此函数时,它成功运行。 但是,当我多次调用它时,在进程内部(仅更改参数,但数据量相同)不会终止。 它在某些我无法识别的地方停止了。 我的问题是:如何调试我的spark应用程序以识别此瓶颈?

1 个答案:

答案 0 :(得分:0)

我通常按照以下步骤测试并解决我的Spark应用程序

  1. master = local

    使用master=local和小型数据集执行应用程序/管道。 使用此选项,我可以在本地使用我最喜欢的IDE运行Spark应用程序 桌面,也可以使用调试选项。

   spark = SparkSession.builder.appName("MyApp").config("master", "local").getOrCreate()
  1. -部署模式客户端

    一旦问题解决并在本地解决,将应用程序打包并部署到edgenode并以小型数据集以client模式执行。我们可以在控制台中看到任何错误消息/堆栈跟踪信息等。

  2. -部署模式群集

    现在以cluster模式执行,具有大型/实际数据集,并更新火花性能的设置,例如执行器数量,执行器内存等。