Как развернуть JAR-зависимости (нативные dll-файлы) на рабочих местах в Azure Databricks? - PullRequest
0 голосов
/ 02 ноября 2019

Я пишу оболочку Java TnHandler.java, которая использует JNA и вызывает mycustom.so нативную библиотеку, у нее есть другие файлы зависимостей. Я экспортирую свое приложение java как исполняемый файл jar и устанавливаю его в кластер блоков данных Azure.

В PySpark я называю свой файл jar следующим образом в записной книжке PyPark в Databricks

from py4j.java_gateway import java_import
java_import(sc._gateway.jvm,"")

jvm = sc._gateway.jvm
java_import(jvm, "*")

foo = jvm.TnHandler()
def applyTn(s):
  return foo.dummyTn(s)

applyTn("give me $20")`

Я получаю эту ошибку java.lang.UnsatisfiedLinkError: Unable to load library 'mycustom.so': libmycustom.so: cannot open shared object file: No such file or directory

Я думаю, что причина в .so файле, и все его зависимости не присутствуют в рабочем узле, где выполняется код.

Как я могу гарантировать, что желаемый .so ивсе его зависимости находятся в пути к классу какого узла выполняется код?

1 Ответ

0 голосов
/ 13 ноября 2019

JNA использует переменную среды LD-Library-Path для поиска библиотек, которые вы пытаетесь загрузить.

Я решил проблему, установив переменную среды LD_Library_Path в настройках моего кластера

...