首页 > 解决方案 > 如何在运行时将外部 jar 添加到 Spark 应用程序

问题描述

我正在开发一个 pyspark 库,它依赖于很多 scala 包。为了使我的库正常工作,我需要在运行 spark 作业之前将这些 jar 加载到 jvm 中。最佳方式是我可以在运行时添加 jars。例如:

spark = SparkSession.builder.appName("SimpleApp") \
    .config("spark.jars", jars) \
    .getOrCreate()

但是这不起作用,我在这里检查了火花文档

看起来有些配置无法在客户端部署模式的运行时设置

Note: In client mode, this config must not be set through the SparkConf directly in your application, because the driver JVM has already started at that point.

现在我目前的解决方案是编写一个脚本并使用该脚本输出到所有外部 jar 的路径,就像这样

spark-submit --jars `pyspark-dependency-jars` MyTest.py

pyspark-dependency-jars是 python 脚本。然而,这不是最佳解决方案。

因此,在我的用例中,我希望无论部署模式是什么,我的 scala jar 都可以由 jvm 加载,因此我不再需要在命令行中包含这样的脚本。

标签: pythonscalaapache-sparkpyspark

解决方案


推荐阅读