Nifi使用ExecuteSQL联接较大的表

时间:2018-11-22 07:36:40

标签: apache-nifi

我正在尝试使用NiFi联接多个表。数据源可能是MySQL或RedShift,将来可能还会有其他东西。当前,我正在为此使用ExecuteSQL处理器,但是输出在单个flowfile中。因此,对于TB的数据,这可能不合适。我也尝试过使用generateTableFetch,但这没有连接选项。

这是我的问题:

  1. ExecuteSQL处理器是否有其他选择?
  2. 是否可以在多个流文件中使ExecuteSQL处理器输出?目前,我可以使用SplitAvro处理器拆分ExecuteSQL的输出。但是我希望ExecuteSQL自己将输出拆分
  3. GenerateTableFetch基于偏移量生成SQL查询。当数据集变大时,这会减慢该过程吗?

    请分享您的想法。预先感谢

1 个答案:

答案 0 :(得分:2)

  

1。ExecuteSQL处理器是否有其他选择?

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

2。是否可以在多个流文件中使ExecuteSQL处理器输出?目前,我可以使用SplitAvro处理器拆分ExecuteSQL的输出。但是我想要ExecuteSQL自己拆分输出吗?

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

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

  • 如果您的源表在indexes上具有 Maximum-value Columns ,则即使您的数据集越来越大,它won't也会减慢该过程。

  • 如果在源表上创建了 no indexes ,那么将始终执行full table scan,这会减慢该过程。