在Bluemix上安排Spark作业

时间:2016-06-10 14:02:13

标签: apache-spark ibm-cloud schedule

我试图按计划在Bluemix上运行我的Spark应用程序。现在我在我的机器上本地使用spark-submit.sh脚本的调度。但是我想将Bluemix用于此目的。有没有办法在Bluemix基础架构中直接设置调度以运行Spark笔记本或Spark应用程序?

1 个答案:

答案 0 :(得分:3)

Bluemix OpenWhisk产品提供了一种简单的方法来安排与cron作业类似的定期计划运行的操作。

基于OpenWhisk的解决方案概述

OpenWhisk提供基于操作触发器规则的编程模型。对于这个用例,你会

  1. 创建操作,开启您的火花工作。
  2. 使用/whisk.system/alarms包安排触发器根据您的日程安排定期到达。
  3. 创建规则,声明您的操作应在触发事件发生时触发。
  4. 如果您的操作很容易从javascript函数启动,则可以使用javascript编码。如果没有,并且您希望通过shell脚本实施您的操作,则可以使用whisk docker actions将shell脚本作为操作进行管理。

    使用whisk.system / alarms包按计划生成事件。

    This page in the whisk docs包含有关如何完成此操作的详细说明。简言之:

    /whisk.system/alarms/alarm feed将Alarm服务配置为以指定频率触发触发事件。参数如下:

    cron: A string, based on the Unix crontab syntax, that indicates when to fire the trigger in Coordinated Universal Time (UTC). The string is a sequence of six fields separated by spaces: X X X X X X. For more details on using cron syntax, see: https://github.com/ncb000gt/node-cron. Here are some examples of the frequency indicated by the string:
        * * * * * *: every second.
        0 * * * * *: top of every minute.
        * 0 * * * *: top of every hour.
        0 0 9 8 * *: at 9:00:00AM (UTC) on the eighth day of every month
    
    trigger_payload: The value of this parameter becomes the content of the trigger every time the trigger is fired.
    
    maxTriggers: Stop firing triggers when this limit is reached. Defaults to 1000.
    

    以下是创建触发器的示例,该触发器将每20秒触发一次,并在触发器事件中使用名称和位置值。

    $ wsk trigger create periodic --feed /whisk.system/alarms/alarm --param cron '*/20 * * * * *' --param trigger_payload '{"name":"Odin","place":"Asgard"}'
    

    每个生成的事件都将包含trigger_payload值中指定的属性作为参数。在这种情况下,每个触发事件都将具有参数name = Odin和place = Asgard。