这是针对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")
并没有帮助。
答案 0 :(得分:0)
您可以尝试在PYSPARK_SUBMIT_ARGS
环境变量中添加JAR(在Spark 2.3之前,这也可以在SPARK_CLASSPATH
中使用)。
例如:
os.environ['PYSPARK_SUBMIT_ARGS'] = '--jars <path/to/jar> pyspark-shell'