在PySpark并行执行上下文中使用JAR依赖项

时间:2019-04-01 18:32:26

标签: python scala apache-spark pyspark databricks

这是针对PySpark / Databricks项目的:

我已经编写了一个Scala JAR库,并通过一个简单的Python包装器将其功能作为UDF公开。一切都可以在我的PySpark笔记本上正常进行。但是,当我尝试在sc.parallelize(..).foreach(..)环境中使用从JAR导入的任何函数时,执行都会因以下错误而终止:

TypeError: 'JavaPackage' object is not callable

包装器中的这一行:

jc = get_spark()._jvm.com.company.package.class.get_udf(function.__name__)

我的怀疑是,在并行化上下文中JAR库不可用,因为如果我将库路径替换为一些乱码,则错误仍然完全相同。

到目前为止,我还无法在Spark文档中找到必要的线索。使用sc.addFile("dbfs:/FileStore/path-to-library.jar")并没有帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试在PYSPARK_SUBMIT_ARGS环境变量中添加JAR(在Spark 2.3之前,这也可以在SPARK_CLASSPATH中使用)。

例如:

os.environ['PYSPARK_SUBMIT_ARGS'] = '--jars <path/to/jar> pyspark-shell'