使用 S3 作为原始数据的数据管道如何工作?

How would a data pipeline using S3 as raw data work?

我目前正在使用 AWS S3 作为数据湖来存储原始数据,每分钟向指定的存储桶添加大约 100 个项目。我知道数据管道和数据 ETL 概念的基础知识,但我仍然不熟悉基础知识,例如 Apache Spark 是什么,或者 AWS Glue 究竟是如何工作的。

我愿意尝试所有教程并自学,但我不知道从哪里开始。如果可以,请指导我从哪里开始执行以下任务。

  1. 每当新对象添加到 S3 存储桶时,转换它们并将它们存储在另一个数据存储中。
  2. 如果要以大型 CSV 格式管理转换后的项目,将其存储在何处(我猜是 DynamoDB,因为它是 table 数据?)。
  3. 这些任务的低级解决方案和高级解决方案如何? (例如,使用 Spark 与 Glue)

谢谢!

这取决于用例。

对于就地转换,您可以/应该使用 AWS Lambda。对于批量转换,您可以使用例如胶水或 EMR,都可以 运行 Spark。

在哪里存储它们/以什么格式取决于您的访问模式,例如在不了解访问模式的情况下将它们存储在发电机中 很好非常糟糕 的想法。将它们保存在 S3 中,适当分区,在 Glue 中有一个元存储并通过 Athena 访问它们可能会起作用。但这非常慢,并且不能很好地处理 100 个文件/分钟,您需要更少的文件和更大的文件,“微批次”。在所有情况下,每个客户端都可以根据数据创建特定的读取模型并存储它并为它建立索引,但是他们喜欢实际应用程序访问。

你必须问自己几个问题:

  • 您对数据了解多少?
  • 你知道有多少进来吗?
  • 您知道数据可用的速度需要多快吗?
  • 您知道数据将如何被访问吗?
  • 是实时数据还是批量数据?
  • ...

我建议您只需要开始使用它/进行试验,创建数据湖及其架构是一个需要数年时间的过程。