Amazon s3 通过运行数据仓库使存档的数据架构保持最新

Amazon s3 通过运行数据仓库使存档的数据架构保持最新,amazon-s3,data-warehouse,amazon-athena,Amazon S3,Data Warehouse,Amazon Athena,最近,我们有5年历史的MySQL数据仓库(主要用于业务报告)已经非常满了,我们需要找到一种方法来归档不经常访问的旧数据,以清理空间 我创建了一个进程,将DW中的旧数据转储到AmazonS3中的.parquet文件中,然后映射到Athena表上。这很有效 但是,我们有时会在现有表中添加/重命名/删除列。我希望这些更改也能反映在旧的归档数据中,但如果不重新处理整个数据集,我就无法想出一个好方法来实现这一点 是否有一种“佳能”方法来保证实时数据仓库与其基于文件的归档数据之间的结构兼容性?我在谷歌上搜索

最近,我们有5年历史的MySQL数据仓库(主要用于业务报告)已经非常满了,我们需要找到一种方法来归档不经常访问的旧数据,以清理空间

我创建了一个进程,将DW中的旧数据转储到AmazonS3中的.parquet文件中,然后映射到Athena表上。这很有效

但是,我们有时会在现有表中添加/重命名/删除列。我希望这些更改也能反映在旧的归档数据中,但如果不重新处理整个数据集,我就无法想出一个好方法来实现这一点

是否有一种“佳能”方法来保证实时数据仓库与其基于文件的归档数据之间的结构兼容性?我在谷歌上搜索了相关文献,什么也没找到


我是否应该接受这样一个事实:如果我需要积极维护模式,那么数据就不会真正存档?

如果你在大数据空间中搜索“模式演变”一词,互联网上有大量的资料

雅典娜文档中有一章是关于模式更新的

如果您正在重新处理整个存档数据集以处理模式更改,可能您做得有点太多了


由于您有拼花文件,并且默认情况下,雅典娜拼花按列名而不是索引解析列,因此几乎在所有情况下都是安全的,即添加新列、删除列等,但列重命名除外。要处理重命名的列(以及处理列的添加/删除),最快的方法是使用view。在视图定义中,可以为重命名的列设置别名。此外,如果列重命名主要是模式演化的情况,如果你做了很多,你也可以考虑AVRO来优雅地处理它。p> 计划A:

现在做这件事已经太迟了,但是分区是从表中获取数据的极好工具

我说“太晚了”,因为添加分区需要足够的空间来复制已经很大的表。你没有那么多的磁盘空间

如果表是按年度、季度或月份划分的,则可以

  • 每个周期,“导出表空间”从分区方案中删除最旧的表空间
  • 该表空间将是一个单独的表;你可以复制/转储/任何东西,然后放弃它
大约在同一时间,您将构建一个新分区来接收新数据

(我会将这两个过程分开,这样你就可以用最少的额外努力延长5年或缩短到5年以下。)

该方法的一个好处是,在处理过程中对大表几乎没有影响

分区的另一个好处是:您实际上可以向操作系统返回空间(假设您有
innodb\u file\u per\u table=ON

方案B:

看看你如何处理oold数据。只有几件事?可能涉及总结?所以

  • 不要归档旧数据
  • 将要删除的数据汇总到新表中。因为它们的大小可能只有原来的十分之一,所以你可以让它们“永远”在线

“清空空间”——意味着磁盘空间不足?或者您担心性能?我的磁盘空间不足,是的。