Как использовать Scala и Python в одном и том же проекте Spark?

Возможно ли подключить Spark RDD к Python?

Потому что мне нужна библиотека python для выполнения некоторых вычислений на моих данных, но мой основной проект Spark основан на Scala. Есть ли способ их смешать и позволить питону получить доступ к одному и тому же контексту искры?

    Вы действительно можете подключиться к скрипту python, используя Scala и Spark и обычный скрипт Python.

    test.py

    #!/usr/bin/python import sys for line in sys.stdin: print "hello " + line 

    искровая оболочка (scala)

     val data = List("john","paul","george","ringo") val dataRDD = sc.makeRDD(data) val scriptPath = "./test.py" val pipeRDD = dataRDD.pipe(scriptPath) pipeRDD.foreach(println) 

    Вывод

    привет Джон

    привет

    Привет, Джордж

    hello paul

    Вы можете запустить код Python через Pipe in Spark.

    С помощью pipe () вы можете записать преобразование RDD, которое считывает каждый элемент RDD со стандартного ввода как String, обрабатывает эту строку в соответствии с инструкцией скрипта, а затем записывает результат как String в стандартный вывод.

    SparkContext.addFile (путь), мы можем добавить список файлов для каждого из рабочих узлов, которые будут загружаться при запуске задания Spark. Все рабочие узлы будут иметь свою копию скрипта, таким образом, мы будем получать параллельную работу по каналу. Нам необходимо установить все библиотеки и зависимости до этого на всех рабочих и исполнительных узлах.

    Пример :

    Файл Python : код для ввода входных данных в верхний регистр

     #!/usr/bin/python import sys for line in sys.stdin: print line.upper() 

    Код искры : для подачи данных

     val conf = new SparkConf().setAppName("Pipe") val sc = new SparkContext(conf) val distScript = "/path/on/driver/PipeScript.py" val distScriptName = "PipeScript.py" sc.addFile(distScript) val ipData = sc.parallelize(List("asd","xyz","zxcz","sdfsfd","Ssdfd","Sdfsf")) val opData = ipData.pipe(SparkFiles.get(distScriptName)) opData.foreach(println) 

    Если я правильно вас понимаю, до тех пор, пока вы берете данные из scala и SparkContext их в RDD или SparkContext вы сможете использовать pyspark для управления данными с помощью Spark Python API.

    Существует также руководство по программированию, которое вы можете использовать, чтобы использовать различные языки в spark