Использование JAR-зависимости в контексте параллельного выполнения PySpark - PullRequest
2 голосов
/ 01 апреля 2019

Это для проекта PySpark / Databricks:

Я написал библиотеку Scala JAR и представил ее функции в виде UDF через простую оболочку Python;все работает, как и должно быть в моих ноутбуках PySpark.Однако, когда я пытаюсь использовать любую из функций, импортированных из JAR в среде sc.parallelize(..).foreach(..), выполнение продолжает умирать со следующей ошибкой:

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 голосов
/ 02 апреля 2019

Вы можете попробовать добавить JAR в переменную окружения PYSPARK_SUBMIT_ARGS (до Spark 2.3 это также можно было выполнить с SPARK_CLASSPATH).

Например, с:

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

...