【问题标题】:Apache Nifi : Oracle To Mongodb data transferApache Nifi:Oracle 到 Mongodb 数据传输
【发布时间】:2020-06-29 09:42:39
【问题描述】:
我想使用 apache nifi 将数据从 oracle 传输到 MongoDB。 Oracle 共有 900 万条记录。
我使用 QueryDatabaseTable 和 PutMongoRecord 处理器创建了 nifi 流。此流程运行良好,但存在一些性能问题。
启动 nifi 流程后,SplitJson -> PutMongoRecord 的队列中的记录正在增加。
有什么办法可以减缓 SplitJson 处理器放入队列的记录?
或
提高 PutMongoRecord 中的插入率?
现在,在 30 分钟内插入了 10 万条记录,如何加快这个过程?
【问题讨论】:
标签:
mongodb
oracle
apache-nifi
【解决方案1】:
@维沙尔。您正在寻找的解决方案是增加 PutMongoRecord 的并发:
您还可以在配置选项卡中试验 BATCH 大小:
还可以减少 splitJson 的执行时间。但是,您应该记住,此过程将占用 1 个流文件并制作大量流文件,无论时间如何。
你可以增加多少并发取决于你有多少个 nifi 节点,以及每个节点有多少个 CPU 内核。在这里进行实验和有条不紊。以单个增量(1-2-3-等)向上移动并在每个增量中测试您的文件。如果您只有 1 个节点,您可能无法将流调整到您的性能预期。而是调整流程以获得稳定性和尽可能快的速度。然后考虑缩放。
您可以增加多少并发和批处理也将取决于 MongoDB 数据源以及您可以从 NiFi 到 Mongo 的连接总数。
【解决方案2】:
除了 Steven 的回答之外,QueryDatabaseTable 上还有两个属性您应该试验一下:
使用后者,您可能能够直接从 Oracle 转换到 MongoDB,因为它将 Oracle 日期类型转换为 Avro 日期类型,而这些又应该通过直接转换为正确的 Mongo 日期类型。每个流文件的最大结果还应该允许您指定适当的批处理,而无需使用额外的处理器。