您可以通过Spark中的管道运行Python代码。
使用pipe()可以编写RDD的转换,该转换将标准输入中的每个RDD元素作为字符串读取,根据脚本指令操作该字符串,然后将结果作为字符串写入标准输出。
addFile(path),我们可以在Spark作业启动时为每个工作节点添加要下载的文件列表。所有工作节点都将拥有其脚本副本,因此我们将通过管道获得并行操作。我们需要先在所有worker和executor节点上安装所有库和依赖项。
示例:
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)