我正在尝试将一些程序分发到使用Spark构建的本地集群。该项目的目的是将一些数据传递给每个工人,并将数据传递给外部的matlab函数进行处理并将数据收集回主节点。我遇到了如何调用matlab函数的问题。Spark可以调用外部函数吗?也就是说,我们可以控制Spark中并行的每个函数,搜索每个节点的局部路径来执行外部函数。
下面是一个小测试代码:
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()
#!/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框架有什么建议吗?在
谢谢
谢谢你回答我的问题。我用不同的方法来解决这个问题。我上传了matlab需要调用的文件和数据,并加载到了节点文件系统的一个路径上。python只需添加路径并使用matlab.引擎模块。 所以我的调用Matlab.py变成
首先,我不认为有任何理由放弃sparktest.m。 其次,推荐的方法是将它们放入.zip文件中。根据文档:
最后,请记住,您的函数将在远程m/c中的executor jvm中执行,因此Spark framework会将函数、闭包和附加文件作为作业的一部分。希望有帮助。在
添加
斯巴克斯特之前的选择。在
它告诉Spark将sparktest.m文件发送给所有工人。在
相关问题 更多 >
编程相关推荐