我正在尝试将一些程序分发到使用Spark构建的本地集群。该项目的目的是将一些数据传递给每个工人,并将数据传递给外部的matlab函数进行处理并将数据收集回主节点。我遇到了如何调用matlab函数的问题。Spark可以调用外部函数吗?也就是说,我们可以控制Spark中并行的每个函数,搜索每个节点的局部路径来执行外部函数。
下面是一个小测试代码:
在运行.py在import sys
from operator import add
from pyspark import SparkContext
import callmatlab
def run(a):
# print '__a'
callmatlab.sparktest()
if __name__ == "__main__":
sc = SparkContext(appName="PythonWordCount")
output = sc.parallelize(range(1,2)).map(run)
print output
sc.stop()
在sparktest.py在
^{pr2}$
提交spark#!/bin/bash
path=/home/zzz/ProgramFiles/spark
$path/bin/spark-submit \
--verbose \
--py-files $path/hpc/callmatlab.py $path/hpc/sparktest.m \
--master local[4] \
$path/hpc/run.py \
README.md
Spark似乎会询问显示为--py文件参数的所有附加的.py文件,但是Spark不识别sparktest.m。
我不知道怎么继续下去。谁能给我一些建议吗?火花允许这样吗?或者其他分布式python框架有什么建议吗?在
谢谢