📊 AWS S3 + AWS Glue + Athena + Grafana — 端到端分析项目

发布: (2025年12月6日 GMT+8 04:26)
4 min read
原文: Dev.to

Source: Dev.to

概述

在本项目中,我使用 AWS 服务构建了一个完整的分析管道:

  • 从 S3 读取 CSV 文件
  • 使用 AWS Glue 将其转换为表
  • 使用 Amazon Athena 查询数据
  • 在 Grafana 中可视化结果

此工作流在云计算和 DevOps 环境中非常常见。

架构图

(Insert architecture diagram image here)

使用的服务

服务用途
S3存储原始 CSV 文件
Glue Crawler检测模式并创建 Athena 表
Glue Data Catalog管理表的元数据
Athena对 S3 文件执行 SQL 查询
Grafana可视化 Athena 查询结果

步骤 1 — 将 CSV 数据上传到 S3

在 S3 存储桶中创建文件夹结构,并使用 AWS CLI 上传 CSV 文件,例如:

aws s3 cp ./data/ s3://my-bucket/raw-data/ --recursive

步骤 2 — 创建 AWS Glue 爬虫

配置一个 Glue 爬虫,使其:

  • 指向包含 CSV 文件的 S3 文件夹
  • 自动检测 CSV 模式
  • 在 AWS Glue Data Catalog 中创建表

爬虫会创建:

  • 数据库名称: s3_log_db
  • 表名称: s3_athena_analytics_abhishek31

爬取完成后,请在 Data Catalog 中验证生成的模式。

步骤 3 — 在 Athena 中查询数据

对爬虫创建的表运行 SQL 查询。例如:

SELECT 
    series_reference,
    period,
    series_title_2,
    value
FROM s3_log_db.s3_athena_analytics_abhishek31
ORDER BY series_title_2 ASC;

该查询确认数据结构正确且可访问。

步骤 4 — 配置 Grafana 数据源

  1. 在 Grafana 中添加新数据源,选择 Amazon Athena
  2. 提供以下配置信息:
    • AWS 区域
    • 用于查询结果的 S3 存储桶
    • 工作组(如适用)
  3. 测试连接——应当成功。

步骤 5 — 在 Grafana 中构建仪表板

使用原始 SQL 查询(不导入 JSON),创建可视化,例如:

  • 按年龄段分布的柱状图
  • 按时间段的数值时间序列分析
  • 按性别的人口趋势
  • 每年的总人口

项目文件夹结构

project/
├─ data/                # 原始 CSV 文件
├─ glue/                # 爬虫配置(JSON/YAML)
├─ athena/              # 保存的查询文件
└─ grafana/             # 仪表板 JSON 导出(可选)

关键收获

  • 使用 AWS Glue 自动模式检测简化了数据导入。
  • Athena 提供了无服务器、成本效益高的直接在 S3 上进行 SQL 查询的能力。
  • Grafana 能原生可视化 Athena 查询结果,实现实时仪表板。

GitHub 仓库

https://github.com/abhikorde31/aws-s3-athena-grafana-analytics

结论

本项目演示了如何使用 AWS S3、Glue、Athena 和 Grafana 构建生产级、无服务器的分析管道。该设置可以通过 AWS Lambda 实时更新、使用 Terraform 进行基础设施即代码,或添加更多可视化进行扩展。

Back to Blog

相关文章

阅读更多 »

被遗忘的 tech 墓地 by kiroween

一次 Hackathon 之旅:走进旧发明的墓园 每年十月,创意世界里总会掀起一阵奇异的波动。今年,Kiroween 发起挑战,……