如何阻止Spark结构化流式传输每次都列出S3存储桶中的所有文件

Aru*_*unK 6 amazon-s3 apache-spark

我在pyspark上有一个结构化的流媒体作业,它在文件源上进行一些聚合.我有一个kinesis firehose结合来自IoT类型应用程序的数据,并将数据存储在S3位置作为每分钟文件在以下文件夹结构中的不同文件夹中 -

s3://year/month/day/hour/
Run Code Online (Sandbox Code Playgroud)

我的火花结构化流媒体作业似乎可以列出我的S3存储桶中可用的所有文件.由于列表过程似乎比我设置的处理时间花费更多的时间.我得到以下警告,我想知道是否有办法不让这种情况发生.

18/06/15 14:28:35 WARN ProcessingTimeExecutor: Current batch is falling behind. The trigger interval is 60000 milliseconds, but spent 74364 milliseconds
18/06/15 14:28:42 WARN FileStreamSource: Listed 4449 file(s) in 6822.134244 ms
18/06/15 14:29:06 WARN FileStreamSource: Listed 4449 file(s) in 6478.381219 ms
18/06/15 14:30:08 WARN FileStreamSource: Listed 4450 file(s) in 8285.654031 ms
Run Code Online (Sandbox Code Playgroud)

bp2*_*010 2

课堂上的评论FileStreamSource

// 当列出文件的时间超过 2 秒时输出警告。

因此,要消除此警告,您可以减少每个触发器处理的文件量:

maxFilesPerTrigger可以在文件源上设置选项以确保所需时间 < 2 秒。

第一个警告是您设置的触发间隔 ( 60000) 短于所用时间 ( 74364)。只需增加触发间隔即可消除此问题。