如何在没有写入_SUCCESS文件的情况下触发Spark写操作下游的进程?

pgx2nnw8  于 6个月前  发布在  Apache
关注(0)|答案(1)|浏览(83)

想象一下以下场景:
我已经通过SNS订阅了一个Lambda到S3 PutObject事件。这个S3 bucket的数据生产者将在成功写入时将_SUCCESS文件写入分区,当检测到_SUCCESS文件时,我的Lambda将触发下游作业并消耗该数据。一切正常。
我最近加入了一个新的数据生产者,我也订阅了S3 PutObject事件-但是这个生产者在完成写入时不会写入任何_SUCCESS文件。
是否有任何推荐的模式或方法可以有效可靠地检测已完成的“完全写入”?(显然不是完美的,因为可能存在大量边缘情况-寻找足够好的解决方案来开始)
到目前为止,我的想法是尝试检测一个分区的PutObject事件的峰值,并跟踪最后一个事件的时间戳。一旦检测到活动已经停止了一段时间(后最近的活动),下游进程将被触发来消耗新的数据。
我该如何改进这一点?

fcg9iug3

fcg9iug31#

我在使用DynamoDB作为作业的元数据跟踪器方面取得了巨大成功,这也有助于在失败的作业时发出警报。
但是您的数据生产者必须能够将元数据放置在那里。在作业成功时,只需更新DynamoDB中的作业项,这将触发Lambda函数,该函数将允许您继续下游处理。
第一个月

相关问题