我正在使用Nifi ExecuteSparkInteractive处理器运行Spark代码,我看到它的结果是成功,失败和等待。进入成功和失败状态后,我能够很好地管理和路由结果,但是有时我看到文件丢失了,我认为它将进入等待状态,并且在Nifi流中没有为“等待”状态定义任何路由。谁能帮助我了解“等待”状态的确切含义,以及如何在不影响最终结果的情况下将控件路由到该状态。
提前谢谢!
我尝试将nifi控件路由到UpdateAttribute处理器,但是我看不到火花代码的结果。看起来代码没有在ExecuteSparkINteractive的“等待”状态期间执行。
由于Nifi提供了处理器之间的复选框和连接控制器,因此没有针对此问题的代码。
我已将控制权从ExecuteSparkInteractive处理器传递给RouteOnAttribute进程,以获取成功和失败情况以及等待状态,但是在等待状态期间未执行Spark代码。
火花代码应该在等待状态下执行,然后路由到成功和失败。
答案 0 :(得分:0)
我发现ExecuteSparkInteractive处理器中“等待”状态的目的。
每当控制/文件流过Execute spark交互式处理器时,它都会从该处理器执行spark代码,但它会先查找在纱线簇上运行的可用Livy Spark会话。 如果没有Livy Spark会话可用(这些会话上可能正在运行其他进程),则控制进入等待状态。
理想情况下,ExecuteSparkInteractive处理器正在等待Livy spark会话可用于执行代码。这就是如果未处理“等待”状态则无法执行代码的原因。
为解决此问题,我在“等待”状态下将ExecuteSparkInteractive称为自身,基本上将控件循环回到同一处理器,以便在处理器可以使用Livy会话时运行火花代码。这种方法解决了我的问题。
我附上了模板的屏幕截图,以供参考。