python - 如何在运行时将外部 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 加载,因此我不再需要在命令行中包含这样的脚本。
解决方案
推荐阅读
- jpa - JPA:将两个字段设为唯一键或让 jpa 更新但不插入
- python - 使用 while 循环将用户输入写入文件
- python - 即使条件为真,if 语句也没有在函数内执行
- javascript - 当同时点击 2 个 div 时,如何触发函数?
- ruby-on-rails - 如何使用 new_user_session 帖子登录 Rspec 请求?
- mysql - 如何在mysql中选择最新的表日期表
- c# - 如何在 C# 中处理有时返回数组、有时返回对象的 JSON 响应
- c# - 如何解决杀死进程的错误?
- java - 编译失败:[...] 无法访问 javax.media.opengl.awt.GLCanvas,找不到 javax.media.opengl.awt.glcanvas 的类文件
- node.js - Slack API - 单击按钮时从同一消息中获取其他组件的值