如何在Apache Spark上的特定时间部署和运行Python脚本?

时间:2015-05-11 10:13:02

标签: python python-2.7 deployment apache-spark pyspark

我有一套简单的python 2.7脚本。另外,我有一组linux节点。我想在这些节点上的特定时间运行这些脚本。

每个脚本都可以在每个节点上运行。该脚本无法同时在多个节点上运行。

所以,我想完成3个简单的任务:

  1. 部署一组脚本。
  2. 在任何节点上使用特定参数在特定时间运行主脚本。
  3. 获取结果,脚本完成时。
  4. 看来,我能够完成第一项任务。我有以下代码段:

    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)])
    

    但我有问题。此代码立即启动任务。但我只想将脚本部署到所有节点。

1 个答案:

答案 0 :(得分:1)

  1. 我建议保留代码以在PySpark脚本之外部署PySpark脚本。

  2. Chronos是一个在Apache Mesos上运行的作业调度程序。 Spark可以在Mesos上运行。 Chronos作为shell命令运行作业。因此,您可以使用指定的任何参数运行脚本。您需要将Spark和脚本部署到Mesos节点。然后,您可以使用spark-submit作为命令,使用Chronos运行提交Spark脚本。

  3. 您可以通过写入PySpark脚本中的某种存储机制来存储结果。 Spark支持文本文件,HDFS,Amazon S3等。如果Spark不支持您需要的存储机制,您可以使用外部库。例如,我使用cassandra-driver在我的PySpark脚本中写信给Cassandra。