【发布时间】: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