Zeppelin通过REST API执行带有参数的作业(所有段落)

时间:2018-04-19 07:03:20

标签: apache-zeppelin

我有一个有许多段落的齐柏林飞艇。我有一个段落应该接收/设置一些参数,这些参数将被其他段落进一步使用。

我想通过zeppelin REST API提交一份工作,该工作将在正文中设置这些参数。

我知道在zeppelin中有一个运行段落的REST API服务 正文中的参数,这种调用的例子是

curl -H“Content-Type:application / json”-X POST -d'{“params”:{“filename”:“/ myfolder / my_file.txt”,“min”:0.89,“max”: 25}}'http://zep_host:zep_port/api/notebook/job/noteid/pargarph_id

我希望通过参数运行作业(所有段落)有类似的东西,而不必分开调用这样做(一次调用设置参数的段落,一次调用提交整个作业)。

我期待你的解决方案。

感谢。

2 个答案:

答案 0 :(得分:1)

不幸的是,没有在0.7中使用输入JSON进行处理的功能,我跟踪了同步和异步提交的Rest API源的整个执行流程,他们只是采用了输入JSON而未使用它。提前进行处理的唯一输入是笔记本和段落ID。下面是齐柏林飞艇的段落运行功能的前几行代码。

  /**
   * Run a single paragraph.
   *
   * @param paragraphId ID of paragraph
   */
  public void run(String paragraphId) {
    Paragraph p = getParagraph(paragraphId);
    p.setListener(jobListenerFactory.getParagraphJobListener(this));
    if (p.isBlankParagraph()) {
      logger.info("skip to run blank paragraph. {}", p.getId());
      p.setStatus(Job.Status.FINISHED);
      return;
    }

很显然,处理输入的可能性是无限的,而这些输入根本无法提供。每个人都可以期望根据他们的输入执行不同的过程,因此在齐柏林飞艇内部进行通用控制流程会有很大不同。

已经说过,作为一种解决方案,我修改了源代码,使其以略有不同的方式达到我的目的。如果还必须使用Zeppelin v0.7,则在这种情况下,唯一可行的方法就是修改源以使数据流按需进行。

答案 1 :(得分:0)

Zeppelin具有各种API,可以将ZeppelinContext用于不同的解释器。

浏览:https://zeppelin.apache.org/docs/0.8.0/usage/dynamic_form/intro.html#creates-programmatically-scope-note

代码:

val date = z.input("date")
println("Sitaaaa : " +date);

打印作为输出发送的日期