
在我所在的团队里,我们一度用 RDS + 复杂脚本生成报表,靠人工维持“日更数据” —— 但每加一个字段、每多一个报表,技术债就成倍增长。我们不是不懂 ETL,而是被旧有的数据处理方式“耦合死了”。
直到我们尝试 构建一个基于 S3 + Glue + Athena 的数据湖,用来承接来自日志系统、CRM、IoT 设备、财务系统的多源数据。最终它不仅解决了扩展性问题,更重要的是,它让业务分析从“求报表”变成了“自助分析”。
这篇文章,我不讲理论,只讲我们如何一步步落地 Glue + Athena,从混乱的数据孤岛,变成标准化、高弹性的“企业分析中台”。
传统数据仓库(如 Redshift、Snowflake)强调 Schema 优先、结构明确。而数据湖(Data Lake)的核心在于:
这种解耦式架构,才是真正适合多源数据接入+轻分析诉求的现代 BI 架构。

@startuml
title 企业数据湖架构 with Glue + Athena
actor SourceSystem as "业务系统/IoT/日志"
database S3 as "S3 数据湖"
component Glue as "Amazon Glue"
database GlueCatalog as "Data Catalog"
component Athena as "Athena 查询引擎"
component QuickSight as "BI 报表"
SourceSystem --> S3 : 原始数据落地
S3 --> Glue : Glue Job 做 ETL/清洗
Glue --> GlueCatalog : 注册元数据
Athena --> GlueCatalog : 查询元数据
Athena --> S3 : 读取清洗后数据
Athena --> QuickSight : 输出到 BI
@enduml我们把 CRM 导出的客户 CSV、Kafka 落盘的行为日志、IoT 设备上报的 JSON 全部写入不同的 S3 前缀目录:
s3://company-data-lake/
├── crm/customers/2025-07-15.csv
├── events/logs/2025/07/15/*.json
└── devices/metrics/2025/07/*.json注意:这里我们并不强依赖结构,只要能被 Glue 识别即可。
在 Amazon Glue 创建一个爬虫(Crawler):
数据源:S3://company-data-lake/crm/customers/
格式:CSV(自动识别)
输出:Glue Data Catalog -> 表名为 crm_customers这个过程不需要写代码,Glue 会在 Catalog 中生成一张可 SQL 查询的“虚拟表”。
下面我们编写一个 Glue Job,用 Python(Spark)清洗原始日志数据:
import sys
from Amazonglue.context import GlueContext
from Amazonglue.transforms import *
from pyspark.context import SparkContext
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
# 读取原始日志
df = glueContext.create_dynamic_frame.from_catalog(
database="company_data",
table_name="events_logs"
)
# 清洗字段
cleaned_df = df.toDF() \
.filter("event_type IS NOT NULL") \
.withColumnRenamed("ts", "event_time")
# 写入 S3(Parquet 格式更高效)
cleaned_df.write.mode("overwrite").parquet("s3://company-data-lake-clean/events/")此过程执行后,我们将“事件日志”变成了结构化、查询友好的数据集。
Athena 是 Serverless SQL 查询服务,无需部署数据库,用 SQL 直接查:
SELECT
customer_id,
COUNT(*) AS total_visits,
MAX(event_time) AS last_visit
FROM company_data.events_cleaned
WHERE event_type = 'visit'
GROUP BY customer_id
ORDER BY total_visits DESC可直接连接 QuickSight、Tableau 等可视化工具,做成日常 BI 报表。
做数据湖最核心的改变是组织能力:
WHERE、按分区建表是常识。Glue + Athena 并不只是“更省事的 ETL 工具”,它代表的是一种 将数据流“解耦 + 自动化 + 自服务” 的数据平台思维:S3 是低成本、高弹性的数据中枢、Glue 是自动化与治理的基建引擎、Athena 是低门槛、SQL 化的数据接口、QuickSight 是最后的业务化落点,它们组合起来,就像拼积木,最终拼成了一个面向全公司开放的数据底座。
如果你也想构建一个现代数据湖,建议从这几步入手:
以上就是本文的全部内容啦。最后提醒一下各位工友,如果后续不再使用相关服务,别忘了在控制台关闭,避免超出免费额度产生费用~