QueryDatabaseTable 在 2节点群集上两次从Mysql表中获取行。将执行设置配置到所有节点时,不会分发提取进程本身。每个节点获取类似的数据,这不是我需要的理想输出。 然而,将其更改为主节点,它工作正常,但单个节点负担获取数据的整个过程,这使得分布式计算失败。有解决方法吗?
答案 0 :(得分:1)
QueryDatabaseTable旨在仅在一个任务上在主节点上运行,它只进行一次获取,而不是分布式解决方案。对于群集中的并行/分布式提取,您需要以下内容:
GenerateTableFetch - > RemoteProcessGroup - >输入端口 - >的ExecuteSQL
GenerateTableFetch应设置为仅在一个任务的主节点上执行。这是"上半年" QueryDatabaseTable的作用,通过生成SQL语句来获取指定大小的批量行。但它没有进行获取。
而是将SQL语句发送到指向同一群集上的RemoteProcessGroup的Input Port(RPG)。这将在NiFi集群中的节点之间分发SQL语句。
每个节点上的ExecuteSQL处理器将获得要执行的SQL语句的子集,从而在整个集群中并行执行提取。请注意,此流程的其余部分将并行执行,您以后无法将结果加入,但听起来并不是您想要的结果。
答案 1 :(得分:0)
rdbms(mysql)不属于分布式计算。
所以,最好只在主节点上从这些来源摄取数据。
然而,在摄取后,您可以拆分数据并将其分布到整个nifi集群中。
请参阅此文https://community.hortonworks.com/articles/16120/how-do-i-distribute-data-across-a-nifi-cluster.html