QueryDatabaseTable Nifi Processor从mysql数据库中获取重复的行

时间:2018-01-17 06:37:51

标签: hadoop distributed-computing apache-nifi

QueryDatabaseTable 2节点群集上两次从Mysql表中获取行。将执行设置配置到所有节点时,不会分发提取进程本身。每个节点获取类似的数据,这不是我需要的理想输出。 然而,将其更改为主节点,它工作正常,但单个节点负担获取数据的整个过程,这使得分布式计算失败。有解决方法吗?

2 个答案:

答案 0 :(得分:1)

QueryDatabaseTable旨在仅在一个任务上在主节点上运行,它只进行一次获取,而不是分布式解决方案。对于群集中的并行/分布式提取,您需要以下内容:

GenerateTableFetch - > RemoteProcessGroup - >输入端口 - >的ExecuteSQL

GenerateTableFetch应设置为仅在一个任务的主节点上执行。这是"上半年" QueryDatabaseTable的作用,通过生成SQL语句来获取指定大小的批量行。但它没有进行获取。

而是将SQL语句发送到指向同一群集上的RemoteProcessGroupInput 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