【问题标题】:Zeppelin execute job (all paragraphs) with parameters via REST APIZeppelin 通过 REST API 使用参数执行作业(所有段落)
【发布时间】:2018-09-29 13:57:50
【问题描述】:

我有一个 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

我希望有类似的东西来运行带有参数的作业(所有段落),而不必为此单独调用(对设置参数的段落进行一次后期调用,一次调用以提交整个工作)。

期待您的解决方案。

谢谢。

弗洛林

【问题讨论】:

    标签: apache-zeppelin


    【解决方案1】:

    不幸的是,在 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,那么在这种情况下,修改源以使数据按您的意愿流动是唯一可行的方法。

    【讨论】:

      【解决方案2】:

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

      打印作为输出发送的日期

      【讨论】:

      • 假设我使用 z.noteTextbox,我如何在 REST API 调用期间传递参数? 0.8.0 文档似乎只提到了在运行单个段落时传递参数
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 2016-02-15
      • 2017-04-07
      • 1970-01-01
      相关资源
      最近更新 更多