我目前有一个大数据架构,其中一些数据管道生成数据输出并将其存储在AWS S3上。我还有一个内部元数据存储,我跟踪每个S3网址和状态(指示URL是否有效)。
有一个预定的AWS glue抓取工具,可以抓取S3前缀,并将新生成的S3路径作为新分区添加到关联的外部雅典娜表中。因此,我的外部表中的数据会自动刷新并可供查询。这很好用。
以下是我要与此体系结构集成的新要求 - 用户可以在自管理的Metastore中将某些S3 URL标记为无效,并且我想从外部表中自动删除这些分区。
想知道什么是解决这个问题的最佳方法?
例如:考虑S3存储桶中有50个URL,它反映在自我管理的Metastore中,如下所示 -
即使我通过查询超级分区的无效分区来删除分区,它们将在下次运行粘合爬虫时再次显示。从S3前缀移动/删除数据是唯一的选择吗?谢谢!
如果您有一个简单的过程并且不需要很多灵活性或自定义,则Glue爬虫可以很好地工作。我喜欢它作为起点。我不相信它适用于复杂的系统。
在这种情况下,我会关闭胶水爬虫。你是对的 - 爬虫只会重新添加那些丢弃的分区。
ALTER TABLE
分区。ALTER TABLE ADD PARTITION
命令。ALTER TABLE DROP PARTITION
命令。唯一需要注意的是,我认为Athena分区需要是'文件夹',即分区的位置需要以/
结尾,并且您不能将单个文件添加为分区。在Athena知道的'文件夹'中添加的任何文件都将添加到任何查询中。如果是这种情况,您可能需要修改文件结构(基于您发布的样本)。