Apache nifi 对于较大的表,Nifi使用ExecuteSQL进行连接

Apache nifi 对于较大的表,Nifi使用ExecuteSQL进行连接,apache-nifi,Apache Nifi,我正在尝试使用NiFi连接多个表。数据源可能是MySQL,或者将来可能是RedShift。目前,我正在为此使用ExecuteSQL处理器,但输出在单个流文件中。因此,对于TB级的数据,这可能不合适。我也尝试过使用generateTableFetch,但它没有连接选项 以下是我的问题: ExecuteSQL处理器有其他选择吗 有没有办法使ExecuteSQL处理器在多个流文件中输出?目前,我可以使用SplitAvro处理器分割ExecuteSQL的输出。但我希望ExecuteSQL本身分割输出 G

我正在尝试使用NiFi连接多个表。数据源可能是MySQL,或者将来可能是RedShift。目前,我正在为此使用ExecuteSQL处理器,但输出在单个流文件中。因此,对于TB级的数据,这可能不合适。我也尝试过使用generateTableFetch,但它没有连接选项

以下是我的问题:

  • ExecuteSQL处理器有其他选择吗
  • 有没有办法使ExecuteSQL处理器在多个流文件中输出?目前,我可以使用SplitAvro处理器分割ExecuteSQL的输出。但我希望ExecuteSQL本身分割输出
  • GenerateTableFetch根据偏移量生成SQL查询。当数据集变大时,这会减慢处理速度吗

    请分享你的想法。提前谢谢

  • 1.ExecuteSQL处理器有其他选择吗?

    • 如果您要连接多个表,那么我们需要使用
      ExecuteSQL
      处理器
    2.有没有办法在多个流文件中输出ExecuteSQL处理器?目前,我可以使用SplitAvro处理器分割ExecuteSQL的输出。但我希望ExecuteSQL本身分割输出?

    • NiFi-1.8版本开始,我们可以配置流文件的
      最大行数
      ,以便ExecuteSQL处理器分割流文件
    • 解决这个问题
    3.GenerateTableFetch根据偏移量生成SQL查询。当数据集变大时,这会减慢处理速度吗?

    • 如果源表在
      最大值列上有
      索引
      ,则即使数据集越来越大,它也不会
      减慢过程

    • 如果源表上没有创建索引,则始终会进行
      全表扫描
      ,这会减慢处理过程