Почему Java синхронизированный не работает в спарк UDF? - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужно инициализировать некоторые .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)))

журналы контейнеров: привет привет привет привет

синхронизируется, кажется, не работает, требуется одна загрузка исполнителя один раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...