Apache nifi 从1表Apache NIFI获取HBase处理器
您好,我在使用Jython处理从hbase到执行脚本的数据时遇到了背压对象阈值问题。如果只执行一个处理器,我的队列总是满的,因为第一个处理器比第二个处理器快。我正在执行第二个处理器从1到3或4的并发任务,但它会生成新的错误消息。在这里:Apache nifi 从1表Apache NIFI获取HBase处理器,apache-nifi,Apache Nifi,您好,我在使用Jython处理从hbase到执行脚本的数据时遇到了背压对象阈值问题。如果只执行一个处理器,我的队列总是满的,因为第一个处理器比第二个处理器快。我正在执行第二个处理器从1到3或4的并发任务,但它会生成新的错误消息。在这里: 这里有人有解决方案吗?这实际上可能会增加您的工作量,但我强烈建议您为自定义实现编写Groovy,而不是Python/Jython/JRuby 有几个原因 Groovy是“为JVM”构建的,并且更干净地利用/集成了Java Jython是用于JVM的Python
这里有人有解决方案吗?这实际上可能会增加您的工作量,但我强烈建议您为自定义实现编写Groovy,而不是Python/Jython/JRuby 有几个原因
- 使用
而不是InvokeScriptedProcessor(ISP)
。ISP的速度更快,因为它只加载脚本一次,然后调用脚本上的方法,而不是每次对脚本求值的ExecuteScriptExecuteScript
- 将
与命令行Python一起使用。您将无法灵活地访问属性、处理器状态等。但是,如果您只是转换内容,您应该会发现使用Python的ExecuteStreamCommand更快ExecuteStreamCommand
- 无论选择哪种语言,如果使用
而不是session.get(int)
,通常都可以提高性能。这样,如果队列中有很多流文件,您可以调用session.get()
或其他方法,每次执行最多处理1000个流文件。如果脚本有很多开销,您可能会发现每次执行处理多个流文件可以显著提高性能session.get(1000)
gethbase >> execute_script