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

Zeppelin execute job (all paragraphs) with parameters via REST API

我有一个有很多段落的飞艇笔记。我有一段应该 receive/set 设置一些参数,这些参数将被其他段落进一步使用。

我想通过 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

我想为 运行 作业(所有段落)提供类似的参数,而不必为此单独调用(一个 post 调用设置的段落参数,一次调用即可提交整个作业)。

期待您的解答。

谢谢。

弗罗林

不幸的是,在 0.7 中没有使用输入 JSON 进行处理的工具,我跟踪了同步和异步提交的 Rest API 源的整个执行流程,它们只接受输入JSON 而不是使用它。提前处理的唯一输入是您的笔记本和段落 ID。下面是 Zeppelin 段落 运行 函数的前几行代码。

  /**
   * 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 内部制作通用控制流是非常不同的。

话虽如此,作为一种解决方案,我已经修改了源代码以以稍微不同的方式满足我的目的。如果您还必须使用 Zeppelin v0.7,那么在这种情况下,修改源以使数据按您想要的方式流动是唯一可行的方法。

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

打印发送日期作为输出