【问题标题】:How to manage the 'wait' state in Nifi ExecuteSparkINteractive processor?如何管理 Nifi ExecuteSparkINteractive 处理器中的“等待”状态?
【发布时间】:2019-06-22 21:52:38
【问题描述】:

我正在使用 Nifi ExecuteSparkInteractive 处理器运行 spark 代码,我看到它的结果是成功、失败和等待。当它进入成功和失败状态时,我能够完美地管理和路由结果,但有时我看到文件丢失了,我认为它将进入等待状态,并且在我的 Nifi 流程中没有为“等待”状态定义路由。谁能帮我理解究竟什么是“等待”状态,以及如何在这种状态下路由控件而不影响最终结果。

提前谢谢你!

我尝试将 nifi 控件路由到 UpdateAttribute 处理器,但我没有看到 spark 代码的结果。看起来代码在 ExecuteSparkINteractive 的“等待”状态期间没有被执行。

由于 Nifi 提供了处理器之间的复选框和连接控制器,因此没有针对此问题的代码。

对于成功和失败条件以及等待状态,我已将控制从 ExecuteSparkInteractive 处理器传递给 RouteOnAttribute 进程,但在等待状态期间火花代码未得到执行。

Spark 代码应该在等待状态期间执行,然后它应该路由到成功和失败。

【问题讨论】:

    标签: apache-spark apache-nifi livy


    【解决方案1】:

    我发现了 ExecuteSparkInteractive 处理器中“等待”状态的目的。

    每当控制/文件流经 Execute spark 交互式处理器时,它都会从该处理器执行 spark 代码,但它会首先查找在 yarn 集群上运行的可用 Livy Spark 会话。 如果没有可用的 Livy Spark 会话(可能是其他进程正在这些会话上运行),则控制进入等待状态。

    理想情况下,ExecuteSparkInteractive 处理器正在等待 Livy spark 会话可用于执行代码。这就是如果未处理“等待”状态,代码不会执行的原因。

    为了解决这个问题,我在“等待”状态下调用 ExecuteSparkInteractive 给它自己,基本上只要处理器有 Livy 会话可用,就将控制循环回同一个处理器以运行 spark 代码。这种方法解决了我的问题。

    我附上了我的模板截图以供参考。

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 2021-12-20
      • 2013-08-05
      • 2021-07-07
      • 2014-06-21
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多