“Create Datasource”向导的必需参数 - Amazon Machine Learning

我们不再更新 Amazon Machine Learning 服务,也不再接受新用户使用该服务。本文档可供现有用户使用,但我们不会再对其进行更新。有关更多信息,请参阅什么是 Amazon Machine Learning

“Create Datasource”向导的必需参数

要允许 Amazon ML 连接到您的 Amazon Redshift 数据库并代表您读取数据,您必须提供以下内容:

  • Amazon Redshift ClusterIdentifier

  • Amazon Redshift 数据库名称

  • Amazon Redshift 数据库凭证(用户名和密码)

  • Amazon ML Amazon Redshift AWS Identity and Access Management (IAM) 角色

  • Amazon Redshift SQL 查询

  • (可选)Amazon ML 架构的位置

  • Amazon S3 暂存位置(Amazon ML 在创建数据源之前将数据放在此位置)

此外,您需要确保创建 Amazon Redshift 数据源(无论是通过控制台还是使用 CreateDatasourceFromRedshift 操作进行创建)的 IAM 用户或角色拥有 iam:PassRole 权限。

Amazon RedshiftClusterIdentifier

使用此区分大小写的参数启用 Amazon ML 以查找并连接到您的集群。您可以从 Amazon Redshift 控制台获取集群标识符(名称)。有关集群的更多信息,请参阅 Amazon Redshift 集群

Amazon Redshift 数据库名称

使用此参数告诉 Amazon ML,Amazon Redshift 集群中的哪个数据库包含您要用作数据源的数据。

Amazon Redshift 数据库凭证

使用这些参数来指定将在其上下文中执行安全查询的 Amazon Redshift 数据库用户的用户名和密码。

注意

Amazon ML 需要 Amazon Redshift 用户名和密码才能连接到您的 Amazon Redshift 数据库。在将数据卸载到 Amazon S3 之后,Amazon ML 永远不会重复使用您的密码,也不会进行存储。

Amazon ML Amazon Redshift 角色

使用此参数可指定 IAM 角色的名称,Amazon ML 应使用该角色配置 Amazon Redshift 集群的安全组以及 Amazon S3 暂存位置的存储桶策略。

如果您没有可访问 Amazon Redshift 的 IAM 角色,Amazon ML 可以为您创建角色。当 Amazon ML 创建角色时,它会创建客户管理型策略并将其附加到 IAM 角色。Amazon ML 创建的策略授予 Amazon ML 权限以仅访问您指定的集群。

如果您已有一个 IAM 角色访问 Amazon Redshift,您可以键入该角色的 ARN,或者从下拉列表中选择该角色。具有 Amazon Redshift 访问权限的 IAM 角色在下拉菜单顶部列出。

IAM 角色必须具有以下内容:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "machinelearning.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:machinelearning:us-east-1:123456789012:datasource/*" } } }] }

有关客户管理型策略的更多信息,请参阅 IAM 用户指南中的客户管理型策略

Amazon Redshift SQL 查询

使用此参数可指定 SQL SELECT 查询,Amazon ML 对您的 Amazon Redshift 数据库执行该查询以选择数据。Amazon ML 使用 Amazon Redshift UNLOAD 操作将您的查询结果安全地复制到 Amazon S3 位置。

注意

当输入记录处于随机顺序(乱序)时,Amazon ML 最适合。您可以通过使用 Amazon Redshift random() 函数将您的 Amazon Redshift SQL 查询结果轻松地随机化。例如,假设原始查询如下:

"SELECT col1, col2, … FROM training_table"

您可以通过如下所示更新查询来嵌入随机乱序:

"SELECT col1, col2, … FROM training_table ORDER BY random()"
架构位置(可选)

使用此参数可以为 Amazon ML 将导出的 Amazon Redshift 数据指定架构的 Amazon S3 路径。

如果您没有提供数据源的架构,Amazon ML 控制台会根据 Amazon Redshift SQL 查询的数据架构自动创建 Amazon ML 架构。Amazon ML 架构比 Amazon Redshift 架构拥有更少的数据类型,因此并不是一对一转换。Amazon ML 控制台使用以下转换方案将 Amazon Redshift 数据类型转换为 Amazon ML 数据类型。

Amazon Redshift 数据类型 Amazon Redshift 别名 Amazon ML 数据类型
SMALLINT INT2 NUMERIC
INTEGER INT、INT4 NUMERIC
BIGINT INT8 NUMERIC
DECIMAL NUMERIC NUMERIC
REAL FLOAT4 NUMERIC
DOUBLE PRECISION FLOAT8、FLOAT NUMERIC
BOOLEAN BOOL BINARY
CHAR CHARACTER、NCHAR、BPCHAR CATEGORICAL
VARCHAR CHARACTER VARYING、NVARCHAR、TEXT TEXT
DATE TEXT
TIMESTAMP TIMESTAMP WITHOUT TIME ZONE TEXT

要转换为 Amazon ML Binary 数据类型,您数据中的 Amazon Redshift 布尔值必须是支持的 Amazon ML 二进制值。如果您的布尔数据类型具有不支持的值,Amazon ML 会将其转换为最可能的具体数据类型。例如,如果 Amazon Redshift 布尔值具有值 012,Amazon ML 会将布尔值转换为 Numeric 数据类型。有关支持的二进制值的更多信息,请参阅 使用 AttributeType 字段

如果 Amazon ML 无法指出数据类型,则默认为 Text

Amazon ML 转换架构后,您可以在“创建数据源”向导中查看和更正分配的 Amazon ML 数据类型,并在 Amazon ML 创建数据源之前修改架构。

Amazon S3 暂存位置

使用此参数可指定 Amazon S3 暂存位置的名称,将 Amazon Redshift SQL 查询结果存储在该暂存位置。创建数据源之后,Amazon ML 使用暂存位置中的数据而不是返回到 Amazon Redshift。

注意

由于 Amazon ML 代入 Amazon ML Amazon Redshift 角色定义的 IAM 角色,因此 Amazon ML 有权访问指定 Amazon S3 暂存位置中的任何对象。因此,建议您在 Amazon S3 暂存位置中仅存储那些不包含敏感信息的文件。例如,如果您的根存储桶是 s3://mybucket/,我们建议您创建一个位置,在其中仅存储您希望 Amazon ML 访问的文件,如 s3://mybucket/AmazonMLInput/