将大型csv文件从s3复制到redshift的最佳方法是什么?

问题描述 投票:0回答:1

我正在将sv文件从s3存储桶复制到redshift的任务。我已经找到了多种方法来做到这一点,但是我不确定哪种方法是最好的方法。这是场景:

[定期将多个大小约为500 MB-1 GB的CSV文件添加到我的s3存储桶中。数据可以包含重复项。任务是将数据复制到redshift表,同时确保redshift中不存在重复数据。

以下是我发现的可以使用的方式:

  1. 创建一个将文件添加到s3存储桶时将触发的AWS Lambda函数。

  2. 使用AWS Kinesis

  3. 使用AWS Glue

我知道Lambda不应用于耗时超过5分钟的工作。因此,我应该使用它还是仅取消此选项?

Kinesis可以处理大量数据,但这是最好的方法吗?

我不熟悉Glue和Kinesis。但我读到胶水可能会很慢。

[如果有人可以指出正确的方向,那将非常有帮助。

amazon-web-services amazon-s3 aws-lambda aws-glue amazon-kinesis
1个回答
1
投票

如果您利用StepFunctions和S3 Select选项将数据子集筛选为较小的块,则可以肯定地使其与Lambda一起使用。您将让Step Functions管理您的ETL编排,在其中执行Lambda,这些Lambda通过S3 select选项有选择地从大数据文件中提取。您的预处理状态(请参阅下面的链接)可用于确定执行要求,然后根据需要执行多个Lambda,甚至可以并行执行。这些lambda将处理数据子集以除去重复数据并执行您可能需要的任何其他ETL操作。然后,您将获取处理后的数据并写入Redshift。这些链接可以帮助您将架构整合在一起:

Trigger State Machine Execution from S3 Event

Manage Lambda Processing Executions and workflow state

Use S3 Select to pull subsets from large data objects

而且,这是我为CDK构建的Python ETL管道示例的link。您将看到一个S3事件驱动的lambda以及数据处理和DDB或MySQL写操作的示例。将为您提供有关如何为ETL操作构建全面的Lambda的想法。您只需要在Redshift的部署中添加一个psycopg2层。希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.