querydatabasetable nifi处理器从mysql数据库获取重复行

6vl6ewon  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(434)

querydatabasetable在2节点集群上两次从mysql表中获取行。如果将执行设置配置为所有节点,则不会分发获取进程本身。每个节点获取相似的数据,这不是我需要的理想输出。然而,将其改为主节点后,其工作情况良好,但单个节点的数据获取过程很繁重,这就违背了分布式计算的观点。有解决办法吗?

ma8fv8wu

ma8fv8wu1#

rdbms(mysql)不属于分布式计算。
因此,最好只在主节点上接收来自这些源的数据。
但是,在接收之后,您可以分割数据并将其分布到整个nifi集群。
看这篇文章https://community.hortonworks.com/articles/16120/how-do-i-distribute-data-across-a-nifi-cluster.html

hgc7kmma

hgc7kmma2#

querydatabasetable被设计为只在主节点上运行一个任务,它只执行一个获取,不是一个分布式解决方案。对于集群中的并行/分布式获取,您将需要以下内容:
generatetablefetch->remoteprocessgroup->输入端口->executesql
generatetablefetch应设置为仅在主节点上执行一个任务。它完成了querydatabasetable的“前半部分”,通过生成sql语句来获取指定大小的成批行。但它不做回音。
而是将sql语句发送到remoteprocessgroup(rpg),rpg指向同一集群上的输入端口。这将在nifi集群中的节点之间分发sql语句。
每个节点上的executesql处理器将获得要执行的sql语句的子集,从而在集群中并行执行获取。请注意,此流的其余部分将并行执行,稍后将无法合并结果,但听起来这并不是您想要的结果。

相关问题