spark结构化流源监视时间分区gcs分区

fhity93d  于 2021-07-12  发布在  Spark
关注(0)|答案(0)|浏览(222)

我正在尝试设置一个结构化的流式查询流在文件从地面军事系统。默认文件流源的问题是,它全局化了静态路径(包括通配符),但理想情况下,我们希望从时间分区目录查询文件。
例如,我们的源文件被写入如下文件夹 gs://bucket-name/YYYY/mm/dd/HH/MM (即)按作者的当前分钟划分。因此,假设最大写入延迟为5分钟,那么我们知道2021/03/05/00/00分区在2021-03-05t00:05之后将不会再接收任何文件,并且在该时间之后可以忽略。但是对于默认的文件源,如果我提供glob路径作为 gs://bucket-name/*/*/*/*/* 如果这个作业运行一个月,它现在将列出所有文件 30 * 24 * 60 = 43200 每间隔分区,而不是只轮询最后5分钟。如果文件或子分区的数量更多,这个问题只会变得更糟,我担心这会影响驱动程序的性能。
beam有一个使用watch的动态轮询选项,这对我们来说是非常理想的—它允许使用显式停止条件定义动态查询的路径。
环顾四周,自3.0.0以来,定制流媒体v2源api似乎发生了巨大的变化(https://issues.apache.org/jira/browse/spark-25390)关于如何设置这样的源代码,几乎没有文档。这个博客看起来很有希望,但不确定当前的api是否足够稳定。
这里的另一个问题是,为了跨压缩编解码器支持各种文件格式(avro、parquet、json),我需要在中重新实现读取器 PartitionReader 接口-如果我可以像使用 FileStreamSource 在这里有。它还解决了从gcs读取大文件的任务划分问题(将它们拆分为多个任务),我不需要担心这个问题。
鉴于这些要求,我正在寻找关于未来最佳道路的指导。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题