这适用于PySpark/Databricks项目:
我已经编写了一个scalajar库,并通过一个简单的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")
没有帮助。你知道吗
您可以尝试在
PYSPARK_SUBMIT_ARGS
环境变量中添加JAR(在spark2.3之前,SPARK_CLASSPATH
也可以这样做)。你知道吗例如:
os.environ['PYSPARK_SUBMIT_ARGS'] = ' jars <path/to/jar> pyspark-shell'
相关问题 更多 >
编程相关推荐