可以通过spark中的管道运行python代码。
使用pipe(),可以编写RDD的 transformation,该 transformation将标准输入中的每个RDD元素作为字符串读取, root据脚本指令操作该字符串,然后将结果作为字符串写入标准输出。
添加文件(路径),我们可以为每个 job节点添加文件列表,以便在启动Spark作业时下载。所有 job节点都将拥有脚本的副本,因此我们将通过管道进行并行操作。我们需要在所有 job节点和执行节点上安装所有的库和依赖项。
例子:
python文件:将输入数据 transformation为大写的代码
#!/usr/bin/python
import sys
for line in sys.stdin:
print line.upper()
spark代码:用于管道数据
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)