【问题标题】:Nifi joins using ExecuteSQL for larger tablesNifi 使用 ExecuteSQL 连接更大的表
【发布时间】:2018-11-22 07:36:40
【问题描述】:

我正在尝试使用 NiFi 加入多个表。数据源可能是 MySQL 或 RedShift,也可能是未来的其他东西。目前,我为此使用 ExecuteSQL 处理器,但输出位于单个流文件中。因此,对于 TB 的数据,这可能不合适。我也尝试过使用 generateTableFetch 但这没有加入选项。

这是我的问题:

  1. ExecuteSQL 处理器有什么替代品吗?
  2. 有没有办法让 ExecuteSQL 处理器在多个流文件中输出?目前我可以使用 SplitAvro 处理器拆分 ExecuteSQL 的输出。但我希望 ExecuteSQL 本身拆分输出
  3. GenerateTableFetch 根据偏移量生成 SQL 查询。当数据集变大时,这会减慢处理速度吗?

    请分享您的想法。提前致谢

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

    1.ExecuteSQL处理器有什么替代品吗?

    • 如果你是joining multiple tables,那么我们需要使用ExecuteSQL处理器。

    2.有没有办法让ExecuteSQL处理器在多个流文件中输出?目前我可以使用 SplitAvro 处理器拆分 ExecuteSQL 的输出。但我希望 ExecuteSQL 本身拆分输出?

    • NiFi-1.8版本开始,我们可以配置Max Rows for flowfile,以便ExecuteSQL处理器分割流文件。
    • NiFi-1251 解决了这个问题。

    3.GenerateTableFetch 根据偏移量生成SQL 查询。当数据集变大时,这会减慢这个过程吗?

    • 如果您的源表在Maximum-value Columns 上有indexes,那么即使您的数据集变得更大,它won't 也会减慢处理速度。

      李>
    • 如果在源表上创建了no indexes,那么将始终创建full table scan,这会导致进程变慢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      相关资源
      最近更新 更多