gethbase >> execute_script
您好,从hbase处理数据到使用Jython执行脚本时,我遇到了背压对象阈值的问题。如果只执行1个处理器,我的队列总是满的,因为第一个处理器比第二个处理器快。我正在将第二个处理器的并发任务从1到3或4进行,但它会产生新的错误消息。这里:
这里有人有解决方案吗?
答案 0 :(得分:3)
这实际上可能会增加你的工作,但我强烈建议你为自定义实现编写Groovy而不是Python / Jython / JRuby。
有几个原因!
如果您仍然喜欢使用Jython,那么您仍然可以做一些事情!
使用ExecuteScript
代替ExecuteStreamCommand
。 ISP更快,因为它只加载脚本一次,然后调用它上面的方法,而不是每次都评估脚本的ExecuteScript。
使用session.get(int)
代替命令行Python。您不具备访问属性,处理器状态等的灵活性,但如果您只是转换内容,则应该更快地找到使用Python的ExecuteStreamCommand。
无论您选择哪种语言,如果使用session.get()
代替session.get(1000)
,通常都可以提高效果。这样,如果队列中有很多流文件,您可以调用active_apps_reported
或其他东西,每次执行最多处理1000个流文件。如果您的脚本有很多开销,您可能会发现每次执行处理多个流文件可以显着提高性能。