Мне нужно инициализировать некоторые .so lib с System.load () в функции UDF, его можно загрузить только один раз, поэтому я создаю один экземпляр с синхронизированным, но он не работает
public static synchronized Instance getInstance() throws IOException {
synchronized (Lock) {
System.out.println("hello")
if (instance == null) {
instance = new Instance();
// System.load(xxx)
}
return instance;
}
}
и в коде искры:
val reRank = (indice:mutable.WrappedArray[Long], values:mutable.WrappedArray[Float]) => {
Instance.getInstance().inference(indice.toArray,values.toArray)
}
val reRankUdf = udf(reRank)
sc.withColumn("name",reRank(sc(indicesCloumnName),sc(valuesCloumnName)))
журналы контейнеров: привет привет привет привет
синхронизируется, кажется, не работает, требуется одна загрузка исполнителя один раз