AWS 中的数据目录编制

发布: (2025年12月3日 GMT+8 21:44)
8 min read
原文: Dev.to

Source: Dev.to

引言

在现代数据工程中,最常被忽视却极具威力的能力之一是数据目录化。若无法清晰了解已有的数据、它们所在的位置、模式以及随时间的变化,任何 ETL 架构都难以扩展。本指南将演示如何使用 AWS Glue Crawlers 对数据进行目录化,以及在处理存储于 Amazon S3 的原始和清洗后数据集时,如何构建元数据层。

本教程使用 S3 原始桶中的一个简单 CSV 文件,展示 AWS Glue 如何自动发现其结构并构建可搜索、可查询的数据目录。所有步骤均可通过 AWS 控制台复现。

什么是数据目录化?

数据目录化是为所有数据资产创建结构化清单的过程。

一个好的数据目录应包含:

  • 数据集名称
  • 模式(列、数据类型、分区)
  • 位置(例如 S3 路径)
  • 元数据(大小、所有者、最近更新)
  • 标签、分类、血缘

它相当于数据生态系统的“索引”——就像图书馆目录帮助读者快速找到书籍一样。

为什么它重要

  • 让跨团队的数据可被发现
  • 减少手动文档工作
  • 确保管道之间的模式一致性
  • 支持数据校验和质量检查
  • 推动自助式分析
  • 支持治理和合规

数据目录化在 ETL 流水线中的作用

ETL 流水线高度依赖元数据。在转换任何数据集之前,流水线必须了解:

  • 存在的列有哪些
  • 需要强制的 数据类型
  • 使用的分区
  • 已发生的模式演进
  • 原始 → 清洗 → 精选层的映射方式

强大的数据目录能够确保:

  • ETL 作业可靠运行
  • Glue/Spark 脚本不会因模式漂移而中断
  • 下游 BI 工具(Athena、QuickSight、Superset、Power BI)能够即时读取数据
  • 数据血缘和文档保持最新

AWS Glue Data Catalog 充当所有结构化和半结构化数据的中心元数据存储。

架构概览

下面是工作流的高级示意图:

架构图

项目演练展示了 Glue Crawlers 如何:

  • 扫描 S3 桶
  • 检测模式(标题、类型、格式)
  • 生成元数据
  • 将元数据以表的形式存入 Data Catalog

生成的元数据可通过 Amazon Athena 查询,供 Glue ETL 作业使用,也可被分析工具消费。

了解 Amazon S3、AWS Glue Crawler 与 Glue Data Catalog

Amazon S3(Simple Storage Service)

Amazon S3 是一种全托管的对象存储服务,可让您以规模化方式存储任何类型的数据——CSV 文件、日志、JSON、Parquet、图片等。它具备高耐久、成本效益高,并能与 AWS 分析服务无缝集成。在大多数现代数据工程架构(包括 Medallion 架构)中,S3 充当 落地层原始层处理层

AWS Glue Crawler

AWS Glue Crawler 是一种自动化元数据发现工具,可扫描存储在 Amazon S3(以及其他来源)中的数据。当爬虫运行时,它:

  1. 读取文件结构和内容
  2. 检测数据格式(CSV、JSON、Parquet 等)
  3. 推断列名和数据类型
  4. 识别分区
  5. 使用内置或自定义分类器对数据集进行分类

随后爬虫会自动创建或更新表的元数据,无需手动定义模式。

AWS Glue Data Catalog

Glue Data Catalog 是 AWS 内部的集中式元数据仓库,存储:

  • 表定义
  • 模式信息
  • 分区详情
  • 供分析服务使用的其他元数据

当 Glue Crawler 完成对 S3 桶的扫描后,它会将发现的模式和表信息写入 Glue Data Catalog。该元数据可被 AthenaEMRRedshift SpectrumAWS Glue ETL 作业等服务查询。

工作流概述:
S3 → Glue Crawler 扫描文件 → 推断模式 → 元数据存入 Glue Data Catalog → 数据可查询。

步骤详解

1. 将 CSV 文件上传至 Amazon S3

创建一个 S3 桶(将名称替换为您自己的):

aws s3api create-bucket --bucket medallion-orders-2025-12-17 --region us-east-1

上传示例 CSV 文件:

aws s3 cp orders.csv s3://medallion-orders-2025-12-17/

可选地将文件放在一个文件夹(前缀)中,以表示原始层:

aws s3 cp orders.csv s3://medallion-orders-2025-12-17/raw/orders.csv

上传截图

2. 创建 Glue 数据库

  1. 在 Glue 控制台,进入 Data Catalog → Databases
  2. 点击 Add database
  3. 为数据库命名为 orders_db,然后点击 Create database

创建数据库截图

3. 创建 AWS Glue Crawler

  1. 前往 Glue → Crawlers,点击 Create crawler
  2. 输入名称(例如 orders_crawler),点击 Next
  3. 点击 Add a data source,选择 S3,并指向包含 CSV 文件的桶/前缀。
  4. 选择之前创建的数据库 orders_db
  5. 配置调度(或选择按需运行),完成向导。

创建爬虫截图

4. 运行爬虫并验证表

创建爬虫后,选中它并选择 Run crawler。完成后,前往 Data Catalog → Tables,在 orders_db 数据库中查看。您应能看到一个新表(如 orders),其中包含推断出的列、数据类型和分区信息。

5. 使用 Athena 查询已目录化的数据

  1. 打开 Athena 控制台。
  2. 将查询结果位置设置为一个 S3 桶(例如 s3://my-athena-results/)。
  3. 运行简单查询:
SELECT * FROM orders_db.orders LIMIT 10;

如果爬虫成功,Athena 将返回 orders.csv 中的记录。

后续步骤

  • 添加分区(例如按日期),并重新运行爬虫以保持目录最新。
  • 与 Glue ETL 作业集成,将原始数据转换为清洗后/精选表。
  • 设置 Lake Formation 或 IAM 策略,实现细粒度访问控制。
  • 启用模式版本管理,跟踪随时间的演进。

通过在早期建立可靠的数据目录,您为在 AWS 上构建可扩展、可维护且受治理的数据管道奠定了坚实基础。

Back to Blog

相关文章

阅读更多 »

SaaS IA 新闻

SaaS IA 新闻的封面图片 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazon...