【问题标题】:Creating a Pyspark session takes approximately 25 seconds创建 Pyspark 会话大约需要 25 秒
【发布时间】:2020-04-17 18:00:38
【问题描述】:

我正在尝试使用 MongoDB 连接器使用 PySpark。但是仅创建 PySpark 会话就需要将近 20 到 25 秒,这会影响服务的性能。我还给出了用于创建 Spark 会话的代码 sn-p。谁能建议我如何让它更快?

from pyspark.sql import SparkSession
my_spark = SparkSession \
        .builder \
        .appName("myApp") \
        .config("spark.mongodb.input.uri", "mongodb://localhost:27017/test/collection1" \
        .config("spark.mongodb.output.uri", "mongodb://localhost:27017/test/collection1" \
        .config("spark.mongodb.input.partitioner", "MongoPaginateBySizePartitioner") \
        .getOrCreate()

【问题讨论】:

  • 您多久创建一次新的 SparkSession?如果不止一次,你可以重复使用它吗?
  • @alxrcs 我有一些小的 python 脚本,只要需要,它就会使用 spawn 方法从 nodejs 服务运行。因此,当脚本完成时,如果我没记错的话,火花会话会自动销毁。您能否建议我在这种情况下是否也可以重用火花会话。
  • 我认为以某种方式保持会话处于活动状态肯定会有助于您的表现,但我不确定现在如何从 nodejs atm 轻松完成,抱歉。不过,您可以尝试查看Apache Livy 看看是否有帮助。
  • 也许您尝试使用一个长时间运行的脚本 Python 脚本来监听发送给它的数据,而不是短暂的 Python 脚本?例如,您可以使用套接字,甚至可以使用另一个带有 Flask(或类似)的完整 REST 服务来重用相同的会话。
  • 你能在这方面取得任何进展吗?

标签: apache-spark session pyspark


【解决方案1】:

为了性能,尽可能多地重用同一个 SparkSession 可能是个好主意。

这里有几个选项:如果您的服务不是 Python 本身,您可以创建第二个 REST Python 服务来保持会话正常运行。

对于像 Flask、FastAPI、Bottle、Falcon 或类似的框架,这应该足够简单。

【讨论】:

    猜你喜欢
    • 2018-02-22
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多