【问题标题】: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 上还有两个属性您应该试验一下:

      • 每个流文件的最大结果
      • 使用 Avro 逻辑类型

      使用后者,您可能能够直接从 Oracle 转换到 MongoDB,因为它将 Oracle 日期类型转换为 Avro 日期类型,而这些又应该通过直接转换为正确的 Mongo 日期类型。每个流文件的最大结果还应该允许您指定适当的批处理,而无需使用额外的处理器。

      【讨论】:

        猜你喜欢
        • 2022-06-16
        • 1970-01-01
        • 1970-01-01
        • 2021-04-18
        • 2014-08-07
        • 2021-02-03
        • 1970-01-01
        • 2016-05-26
        • 1970-01-01
        相关资源
        最近更新 更多