【问题标题】:AWS - ETL - JSON / CSV files to RDSAWS - ETL - JSON / CSV 文件到 RDS
【发布时间】: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


【解决方案1】:

您可以使用 AWS Step 函数创建一个能够对您描述的数据执行 ETL 操作的工作流。 (如果给定的数据集太大而导致 Lambda 函数超时,那么请考虑使用 Glue。但是,鉴于您的用例和您描述的数据,我怀疑这里的情况和 Lambda 是否可以工作)。

您可以使用 Lambda 函数执行数据操作,并使用 AWS 开发工具包调用 AWS 服务操作以满足您的业务需求。

作为如何使用 Lambda 和 AWS Step 函数来执行此用例的示例,请参阅此 AWS 教程,该教程显示了一个类似的用例,它读取位于 Amazon S3 存储桶中的 excel 文档,提取数据并将数据放入 Amazon DynamoDB 表中。

本 AWS 教程是使用 AWS SDK for Java 实现的;但是,您可以使用任何受支持的编程语言编写 Lambda 函数。这肯定会为您指明正确的方向。

Creating an ETL workflow by using AWS Step Functions and the AWS SDK for Java

【讨论】:

  • 感谢您的帮助。与 AWS Glue 相比,使用 Step Functions 有什么优势?
  • 两者都有效。但是,如果数据不会破坏 Lambda - 使用 Lambda 是一种选择
猜你喜欢
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 2018-12-02
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 2020-07-08
  • 2018-10-29
相关资源
最近更新 更多