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

это возможно для трубы Искра RDD в Python?

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

3 ответов


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

test.py

#!/usr/bin/python

import sys

for line in sys.stdin:
  print "hello " + line

spark-shell (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)

выход

Здравствуйте, John

привет Ринго

привет Георгий

Здравствуйте, Павел


Вы можете запустить код на Python через труба в Искра.

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

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 и скрыть его RDD или SparkContext тогда вы сможете использовать pyspark для управления данными с помощью Spark Python API.

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