将数据从 Athena 或 Redshift 获取到 Sage maker 或 AWS Forecast 而不是平面文件

Posted

技术标签:

【中文标题】将数据从 Athena 或 Redshift 获取到 Sage maker 或 AWS Forecast 而不是平面文件【英文标题】:to source the data from Athena or Redshift to Sage maker or AWS Forecast instead of the flat file 【发布时间】:2019-07-09 20:16:50 【问题描述】:

我正在尝试直接从 Athena 或 Redshift 获取数据到 Sage maker 或 AWS Forecast,而不使用平面数据。在 Sage maker 中,我使用 Jupyter Notebook python 代码。无论如何,即使没有连接到 S3 也可以这样做。

到目前为止,我一直在使用平面数据,这不是我想要的。

【问题讨论】:

【参考方案1】:

如果您仅使用 SageMaker 笔记本实例,则您的数据不必位于 S3 中。您可以使用 boto3 SDK 或 SQL 连接(取决于后端)下载数据,将其存储在本地,然后在笔记本中进行处理。

如果您使用 SageMaker SDK 进行训练,那么可以,数据必须在 S3 中。如果您正在试验,您可以手动执行此操作,也可以使用 AWS Glue 或 AWS Batch 等服务来自动化您的数据管道。

确实,Athena 数据可能已经在 S3 中,尽管它可能采用 SageMaker 训练代码不支持的格式。使用正确的 SerDe(比如 CSV)创建一个新表可能就足够了。如果没有,您当然可以使用 AWS Glue 或 Amazon EMR 完成工作。

对于 Redshift,将 CSV 数据转储到 S3 非常简单:

unload ('select * from mytable')   
to 's3://mybucket/mytable' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter ',';

希望这会有所帮助。

【讨论】:

【参考方案2】:

如果您使用 SageMaker,则必须使用 S3 读取数据,SageMaker 不会从 Redshift 读取数据,但可以使用 PyAthena 从 Athena 读取数据。

如果您的数据源位于 Redshift 中,您需要先将数据加载到 S3 才能在 SageMaker 中使用。如果您使用的是 Athena,您的数据已经在 S3 中。

Amazon Machine Learning 曾经支持从 Redshift 或 RDS 读取数据,但遗憾的是它不再可用。

【讨论】:

请注意,如果您的数据在“雅典娜”中,它可能在 S3 中。 你说得对,我会改写它以使其更准确。【参考方案3】:

SageMaker Data Wrangler 现在允许您直接从 Amazon Redshift 读取数据。但我不确定您是否可以跨 AWS 账户(例如,如果您有一个用于开发的账户和另一个用于生产的账户)

【讨论】:

以上是关于将数据从 Athena 或 Redshift 获取到 Sage maker 或 AWS Forecast 而不是平面文件的主要内容,如果未能解决你的问题,请参考以下文章

Redshift Spectrum 比 Athena 慢很多?

在 athena 上工作时,数据在 redshift 外部表上显示为空

过滤加载到 Redshift 中的数据

Redshift Spectrum 性能对比 Athena

当我们使用 Glue 将数据从 DocumentDb 转储到 Redshift 时,从 Redshift 获取字符串而不是数组

从 Redshift 表中获取 JSON 数据