首页 > 解决方案 > S3 中需要用于 EMR 或 Redshift 上的机器学习的压缩数据

问题描述

我在 S3 存储中有大量压缩格式的 CSV 文件。出于机器学习的目的,我只需要数据中的一部分列。我应该如何在不传输整个文件的情况下将这些列提取到 EMR 然后到 Redshift?

我的想法是将所有文件处理成 EMR,然后提取子集并将所需的列推送到 Redshift。但这需要很多时间。如果有处理这些数据的优化方法,请告诉我。

编辑:我正在尝试使用 Kafka 自动化此管道。假设在 S3 中添加了一个新文件夹,它应该在 EMR 中使用 spark 处理并存储到 redshift 中,无需任何人工干预。

编辑 2:感谢输入人员,我能够使用 EMR 中的 Pyspark 创建从 S3 到 Redshift 的管道。目前,我正在尝试将 Kafka 集成到这个管道中。

标签: amazon-s3amazon-redshiftamazon-emr

解决方案


如果目标是在 Redshift 的表中实现文件列的子集,那么您可以选择 Redshift Spectrum,它允许您在 S3 中的 CSV 文件上定义“外部表”。

然后,您可以从外部表中选择相关列并将它们插入到实际的 Redshift 表中。

当 Spectrum 扫描 CSV 文件以查询它们时,您将遇到初始成本损失,这将根据文件的大小而有所不同,但这可能比启动 EMR 集群来处理数据要少得多。

Amazon Redshift Spectrum 入门


推荐阅读