定期将数据从 S3 存储桶流式传输到红移

Posted

技术标签:

【中文标题】定期将数据从 S3 存储桶流式传输到红移【英文标题】:Stream data from S3 bucket to redshift periodically 【发布时间】:2016-07-29 09:09:52 【问题描述】:

我有一些数据存储在 S3 中。我需要定期将这些数据从 S3 克隆/复制到 Redshift 集群。要进行批量复制,我可以使用复制命令从 S3 复制到 redshift。

同样有任何简单的方法可以定期将数据从 S3 复制到 Redshift。

谢谢

【问题讨论】:

【参考方案1】:

尝试使用 AWS Data Pipeline,它具有用于将数据从一项 AWS 服务移动到另一项的各种模板。 “将数据从 S3 加载到 Redshift”模板将数据从 Amazon S3 文件夹复制到 Redshift 表中。您可以将数据加载到现有表中或提供 SQL 查询来创建表。 Redshift 表必须与 Amazon S3 中的数据具有相同的架构。

数据管道支持按计划运行的管道。你有一个用于调度的 cron 样式编辑器

【讨论】:

您好,虽然管道可用于按计划复制数据,但我想它会复制整个数据。我们需要增量复制数据,即复制一次的数据不应该再次复制。我在管道中找不到任何文档来执行此操作?有没有 。我也在阅读 Lambda Functions 。他们能来这里救援吗?【参考方案2】:

AWS Lambda Redshift Loader 是一个很好的解决方案,只要新文件出现在 Amazon S3 上的预配置位置,它就会在 Redshift 上运行 COPY 命令。

链接:

https://aws.amazon.com/blogs/big-data/a-zero-administration-amazon-redshift-database-loader/ https://github.com/awslabs/aws-lambda-redshift-loader

【讨论】:

【参考方案3】:

我相信 Kinesis Firehose 是完成这项工作的最简单方法。只需创建一个 Kinesis Forehose 流,将其指向 Redshift 集群中的特定表,将数据写入流,完成 :)

此处的完整设置过程: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/event-publishing-redshift-firehose-stream.html

【讨论】:

现在有更好的选择将 s3 数据移动到 redshift 集群。一旦数据到达 s3,它应该自动移动 redshift .. 有任何来自 aws 的解决方案。请分享【参考方案4】:

Kinesis 选项仅在 redshift 可公开访问时才有效。

【讨论】:

【参考方案5】:

您可以使用带有 lambda 的复制命令。您可以配置 2 个 lambda。一个将为您即将到来的新数据创建一个清单文件,另一个将从该清单中读取以使用 Redshift 数据 api 将其加载到 redshift。

【讨论】:

以上是关于定期将数据从 S3 存储桶流式传输到红移的主要内容,如果未能解决你的问题,请参考以下文章

AWS Firehose中间S3存储桶和传输流依赖关系出现问题

从 Amazon S3 流式传输 MP3

有没有办法通过数据管道以预定义的顺序将文件从 S3 复制到红移

我们可以使用复制命令使用访问密钥和秘密密钥将数据从 S3 加载到红移表中吗(不使用 IAM 角色)

当我们将数据从加密的 AWS S3 存储桶发送到加密的 Google Cloud Storage 存储桶时,该数据是不是在传输过程中加密?

使用 python boto3 将文件从一个 S3 存储桶传输到另一个 S3 存储桶