Есть ли какой-нибудь выход для доступа к java-объектам на рабочих узлах через pyspark?
Ниже приведен мой рабочий пример скалярного кода.Я пытаюсь добиться того же с помощью python на pyspark.
import test.Transformation
import test.GeneralPreHook
sc.addJar("/navi/Transformer.jar")
GeneralPreHook.config(sc.hadoopConfiguration)
val params = sc.hadoopConfiguration.get("params")
val file = sc.textFile("adl://xxxxx.azuredatalakestore.net/navi/test.txt")
val output = file.flatMap(line => line.split("\n")).map{word =>
val transformer = new Transformation(params)
transformer.decryptString(word)
}
output.saveAsTextFile("adl://xxxxx.azuredatalakestore.net/navi/Out")
Вот пример кода Python, который я пытаюсь выполнить через pyspark.
Открыть оболочку pyspark с нижепараметры.
pyspark --jars /navi/Transformer.jar --master yarn
from pyspark import SparkContext
#Add required jar files to distributed cache which can be used by slave nodes
sc._jsc.addJar("/navi/Transformer.jar")
sc._jvm.test.Transformation.setParams(params)
# Create a RDD of the input file.
file = sc.textFile("adl://xxxxx.azuredatalakestore.net/navi/test.txt")
#5. Split each line to tokens, transform input tokens in map class
output=file.flatMap(lambda line: line.split(",")).map(lambda line : sc._jvm.test.Transformer.transformStatic(line))
#Save results(the task directory should be cleaned first)
output.saveAsTextFile("adl://xxxxx.azuredatalakestore.net/navi/Out")
#Alternatively, we can display the results directly
output.collect()
При сборе или сохранении результатов в выходной файл, яошибки ниже: -
pickle.PicklingError: Не удалось сериализовать объект: Исключение: Похоже, что вы пытаетесь сослаться на SparkContext из широковещательной переменной, действия или преобразования.SparkContext может использоваться только в драйвере, а не в коде, который он запускает на рабочих.Для получения дополнительной информации см. SPARK-5063.
Я много гуглил, но не смог решить эту проблему.Тем не менее, подобный код выполняется отлично с Scala.Любой другой способ использовать функцию java на карте?
Любая помощь по этому вопросу будет принята с благодарностью.Заранее спасибо!