自动执行外部hive / athena表分区管理

问题描述 投票:1回答:1

我目前有一个大数据架构,其中一些数据管道生成数据输出并将其存储在AWS S3上。我还有一个内部元数据存储,我跟踪每个S3网址和状态(指示URL是否有效)。

有一个预定的AWS glue抓取工具,可以抓取S3前缀,并将新生成的S3路径作为新分区添加到关联的外部雅典娜表中。因此,我的外部表中的数据会自动刷新并可供查询。这很好用。

以下是我要与此体系结构集成的新要求 - 用户可以在自管理的Metastore中将某些S3 URL标记为无效,并且我想从外部表中自动删除这些分区。

想知道什么是解决这个问题的最佳方法?

例如:考虑S3存储桶中有50个URL,它反映在自我管理的Metastore中,如下所示 - enter image description here

即使我通过查询超级分区的无效分区来删除分区,它们将在下次运行粘合爬虫时再次显示。从S3前缀移动/删除数据是唯一的选择吗?谢谢!

amazon-web-services amazon-s3 bigdata amazon-athena aws-glue
1个回答
0
投票

如果您有一个简单的过程并且不需要很多灵活性或自定义,则Glue爬虫可以很好地工作。我喜欢它作为起点。我不相信它适用于复杂的系统。

在这种情况下,我会关闭胶水爬虫。你是对的 - 爬虫只会重新添加那些丢弃的分区。

  • 你可以使用add轻松地从雅典娜桌上分割dropALTER TABLE分区。
  • 删除新文件时显式调用ALTER TABLE ADD PARTITION命令。
  • 这非常简单 - 有一个Lambda函数可以监听S3的对象创建事件。 该对象被删除,事件触发 Lambda函数启动并查看对象键 调用Athena查询以将新对象添加为分区。
  • 当用户标记要删除时,显式调用ALTER TABLE DROP PARTITION命令。

唯一需要注意的是,我认为Athena分区需要是'文件夹',即分区的位置需要以/结尾,并且您不能将单个文件添加为分区。在Athena知道的'文件夹'中添加的任何文件都将添加到任何查询中。如果是这种情况,您可能需要修改文件结构(基于您发布的样本)。

© www.soinside.com 2019 - 2024. All rights reserved.