我有一套简单的python 2.7脚本。另外,我有一组linux节点。我想在这些节点上的特定时间运行这些脚本。
每个脚本都可以在每个节点上运行。该脚本无法同时在多个节点上运行。
所以,我想完成3个简单的任务:
看来,我能够完成第一项任务。我有以下代码段:
import urllib
import urlparse
from pyspark import SparkContext
def path2url(path):
return urlparse.urljoin(
'file:', urllib.pathname2url(path))
MASTER_URL = "spark://My-PC:7077"
deploy_zip_path = "deploy.zip"
sc = SparkContext(master=("%s" % MASTER_URL), appName="Job Submitter", pyFiles=[path2url("%s" % deploy_zip_path)])
但我有问题。此代码立即启动任务。但我只想将脚本部署到所有节点。
答案 0 :(得分:1)
我建议保留代码以在PySpark脚本之外部署PySpark脚本。
Chronos是一个在Apache Mesos上运行的作业调度程序。 Spark可以在Mesos上运行。 Chronos作为shell命令运行作业。因此,您可以使用指定的任何参数运行脚本。您需要将Spark和脚本部署到Mesos节点。然后,您可以使用spark-submit
作为命令,使用Chronos运行提交Spark脚本。
您可以通过写入PySpark脚本中的某种存储机制来存储结果。 Spark支持文本文件,HDFS,Amazon S3等。如果Spark不支持您需要的存储机制,您可以使用外部库。例如,我使用cassandra-driver在我的PySpark脚本中写信给Cassandra。