如何在Nifi ExecuteSparkINteractive处理器中管理“等待”状态?

时间:2019-06-22 21:52:38

标签: apache-spark apache-nifi livy

我正在使用Nifi ExecuteSparkInteractive处理器运行Spark代码,我看到它的结果是成功,失败和等待。进入成功和失败状态后,我能够很好地管理和路由结果,但是有时我看到文件丢失了,我认为它将进入等待状态,并且在Nifi流中没有为“等待”状态定义任何路由。谁能帮助我了解“等待”状态的确切含义,以及如何在不影响最终结果的情况下将控件路由到该状态。

提前谢谢!

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

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

我已将控制权从ExecuteSparkInteractive处理器传递给RouteOnAttribute进程,以获取成功和失败情况以及等待状态,但是在等待状态期间未执行Spark代码。

火花代码应该在等待状态下执行,然后路由到成功和失败。

1 个答案:

答案 0 :(得分:0)

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

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

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

为解决此问题,我在“等待”状态下将ExecuteSparkInteractive称为自身,基本上将控件循环回到同一处理器,以便在处理器可以使用Livy会话时运行火花代码。这种方法解决了我的问题。

我附上了模板的屏幕截图,以供参考。 enter image description here