QueryDatabaseTable Nifi 处理器从 mysql 数据库中获取重复行
QueryDatabaseTable Nifi Processor fetches duplicate rows from mysql database
QueryDatabaseTable 在 2 节点 集群上两次从 Mysql table 中获取行。当执行设置被配置到所有节点时,抓取过程本身不会被分发。每个节点获取相似的数据,这不是我需要的理想输出。
换成主节点也能正常工作,但是一个节点承担了整个获取数据的过程,这就违背了分布式计算的意义。有解决办法吗?
rdbms(mysql)不属于分布式计算
因此,最好仅在主节点上从此类来源摄取数据。
然而,在摄取之后,您可以拆分数据并将其分布在整个 nifi 集群中。
查看这篇文章https://community.hortonworks.com/articles/16120/how-do-i-distribute-data-across-a-nifi-cluster.html
QueryDatabaseTable 旨在 运行 在主节点上仅执行一项任务,它执行一次提取,不是分布式解决方案。对于 parallel/distributed 在集群中获取,您将需要以下内容:
GenerateTableFetch -> RemoteProcessGroup -> 输入端口 -> 执行SQL
GenerateTableFetch 应设置为仅在主节点上执行一个任务。它通过生成 SQL 语句来获取指定大小的批量行,从而完成 QueryDatabaseTable 所做的 "first half"。但它不执行提取。
相反,您将 SQL 语句发送到同一集群上的 RemoteProcessGroup (RPG) which points to an Input Port。这将在 NiFi 集群的节点之间分发 SQL 语句。
每个节点上的 ExecuteSQL 处理器将获得要执行的 SQL 语句的子集,从而在集群中并行执行提取。请注意,此流程的其余部分将并行执行,您稍后将无法合并结果,但听起来这不是您想要的。
QueryDatabaseTable 在 2 节点 集群上两次从 Mysql table 中获取行。当执行设置被配置到所有节点时,抓取过程本身不会被分发。每个节点获取相似的数据,这不是我需要的理想输出。 换成主节点也能正常工作,但是一个节点承担了整个获取数据的过程,这就违背了分布式计算的意义。有解决办法吗?
rdbms(mysql)不属于分布式计算
因此,最好仅在主节点上从此类来源摄取数据。
然而,在摄取之后,您可以拆分数据并将其分布在整个 nifi 集群中。
查看这篇文章https://community.hortonworks.com/articles/16120/how-do-i-distribute-data-across-a-nifi-cluster.html
QueryDatabaseTable 旨在 运行 在主节点上仅执行一项任务,它执行一次提取,不是分布式解决方案。对于 parallel/distributed 在集群中获取,您将需要以下内容:
GenerateTableFetch -> RemoteProcessGroup -> 输入端口 -> 执行SQL
GenerateTableFetch 应设置为仅在主节点上执行一个任务。它通过生成 SQL 语句来获取指定大小的批量行,从而完成 QueryDatabaseTable 所做的 "first half"。但它不执行提取。
相反,您将 SQL 语句发送到同一集群上的 RemoteProcessGroup (RPG) which points to an Input Port。这将在 NiFi 集群的节点之间分发 SQL 语句。
每个节点上的 ExecuteSQL 处理器将获得要执行的 SQL 语句的子集,从而在集群中并行执行提取。请注意,此流程的其余部分将并行执行,您稍后将无法合并结果,但听起来这不是您想要的。