【发布时间】:2021-07-06 11:47:22
【问题描述】:
您好,我有 3 个不同的文件(2 个 CSV 和 1 个 JSON),其中包含来自不同学校的学生成绩单成绩。
第一个学校派生自具有以下结构的 CSV:
| firstname | lastname | topic | mark |
|---|---|---|---|
| Mark | Johnson | Math | A+ |
| John | Fisher | Art | B- |
第二所学校有一个CSV文件,结构如下:
| name | topic | mark |
|---|---|---|
| Peter | Music | A+ |
| Mary | Art | B- |
最后第3个学校是一个Json文件,结构如下:
[
{
"firstname": "Peter",
"lastname": "McCkaulay",
"subject": "Mathematics",
"grade": 49
},
{
"first_name": "Mary",
"last_name": "Jane",
"subject": "Physics",
"grade": ""
},
{
"first_name": "Joseph",
"last_name": "Brighton",
"subject": "Soc. Studies",
"grade": 89
}
]
谁能给我一些关于如何在 AWS 上构建高效 ETL 流程的建议,这将允许我处理来自 3 个不同学校的所有数据并将其加载到 AWS RDS(PostgreSQL、MySQL 等)中,所以我可以对数据进行一些分析吗?
我知道我可以通过将 3 个文件加载到 S3 中来实现这一点,然后创建一个 lambda 以将数据加载到 DynamoDB 中,然后将其加载到 RDS 中。这是最好的选择吗?
感谢任何帮助。
【问题讨论】:
-
当然,这听起来是个不错的选择。您可以在将对象上传到 Amazon S3 存储桶时自动触发 Lambda 函数。 Lambda 函数可以从文件名中提取信息以确定它是什么类型的文件,或者您可以上传到不同的路径并让每个路径触发不同的 Lambda 函数。据推测,还会从文件名中提取一些附加信息(例如学校名称)。
-
感谢您的帮助。所以我有 3 个不同的 S3 存储桶,每个存储桶都有自己的 lambda,可以将数据加载到 DynamoDB 中,对吗?
-
没必要。您可以拥有一个可以识别文件格式的 Lambda 函数,也可以拥有三个独立的 Lambda 函数,每个函数都与一个单独的 Amazon S3 触发器相关联。 S3 触发器可以与 S3 存储桶中的路径(目录)相关联,因此您可以简单地将 3 个文件夹放在同一个存储桶中,然后将每个文件放入相应的存储桶中,以触发将加载数据的 Lambda 函数。
标签: json amazon-web-services csv etl