使用SparkSession.builder时如何设置profiler_cls?

时间:2019-02-17 08:44:52

标签: python apache-spark pyspark profiling

我有一个使用pyspark的SparkSession.builder创建一个SparkSession的python代码库。我正要分析正在运行的python代码。

如果我直接调用SparkContext构造函数,则可以传入profiler_cls参数。但是,使用该构造函数,似乎没有一种方法可以执行此操作。我想念什么吗?目前,它默认为BasicProfiler,但我想使用https://pypi.org/project/pyspark-flame/

任何帮助将不胜感激。

该代码的简化版本(删除多余的配置设置)是:

SparkSession.builder.master(master).appName(app_name) \
        .config("spark.driver.maxResultSize", "4g") \
        .config("spark.python.profile", "true") \
        .config("spark.python.profile.dump", ".") \
        .getOrCreate()

我正在尝试使用构建器来执行此操作,而不是自己实现该代码。

1 个答案:

答案 0 :(得分:0)

Builder类具有未记录的方法_sparkContext,该方法可让您指定会话的Spark上下文,因此将._sparkContext(SparkContext(profiler_cls=...))添加到您的构建器中应该可以工作(尽管我尚未测试)它)。

但是请注意,pyspark-flame(以及其他使用pyspark的分析功能的探查器)只能对在工作线程上运行Python代码的RDD进行探查,而Spark SQL在Java和Scala中承担了大部分繁重的工作。根据您的应用程序以及您对SQL和数据帧的依赖程度,您可能会也可能不会从中获取有用的数据。