在NiFi中是否可以通过FetchS3Object处理器有选择地读取?

时间:2017-01-21 17:01:31

标签: amazon-s3 apache-nifi

在Apache NiFi中,使用FetchS3Object从S3存储桶读取,我看到它可以读取存储桶中的所有对象并添加它们。有可能:

  1. 要将处理器配置为只读取现在添加的对象,而不是已经存在的对象?
  2. 如何让它读取存储桶中的特定文件夹?
  3. NiFi看起来很棒,只是在他们的文档中缺少了至少受欢迎的处理器的例子。

3 个答案:

答案 0 :(得分:9)

ListS3和FetchS3Object处理器的组合将执行此操作:

  1. ListS3 - 枚举您的S3存储桶并生成引用每个对象的流文件。您可以配置前缀属性以指定存储桶中的特定文件夹以仅枚举子集。 ListS3使用NiFi的状态功能跟踪它所读取的内容,因此当新对象添加到存储桶时,它将生成新的流文件。
  2. FetchS3Object - 将S3对象读入流文件内容。您可以通过将FetchS3Object的 Bucket 属性配置为${filename},将 Object Key 属性配置为{{1}}来使用ListS3的输出。
  3. tags tab

答案 1 :(得分:2)

另一种方法是配置S3存储桶以发送SNS通知,订阅SQS队列。 NiFi将从SQS队列中读取以接收通知,过滤感兴趣的对象并进行处理。

有关此方法的更多信息,请参阅Monitoring An S3 Bucket in Apache NiFi

答案 2 :(得分:2)

使用GetSQS和fetchS3Object处理器并配置GETSQS处理器以侦听新添加文件的通知。它是一种事件驱动的方法,因为无论何时新文件到来,SQS队列都会向nifi发送通知。 使用以下链接获取完整说明: AWS-NIFI integration