Я пишу оболочку 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
ивсе его зависимости находятся в пути к классу какого узла выполняется код?