导入 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

导入

你可以使用亚马逊 SageMaker Data Wrangler 从以下导入数据数据源:Amazon Simple Storage Service (Amazon S3)、Amazon Athena、Amazon Redshift 和 Snowflake。您导入的数据集最多可以包含 1000 列。

有些数据源允许您添加多个数据连接

  • 您可以连接到多个 Amazon Redshift 集群。每个集群都会变成数据源。

  • 您可以查询账户中的任何 Athena 数据库以从该数据库导入数据。

从数据源导入数据集时,该数据集将显示在数据流中。Data Wrangler 会自动推断您的数据集中每一列的数据类型。要修改这些类型,请选择数据类型步骤然后选择编辑数据类型.

当您从 Athena 或 Amazon Redshift 导入数据时,导入的数据将自动存储在默认值中 SageMaker 用于Amazon您正在使用 Studio 的区域。此外,Athena 将您在 Data Wrangler 中预览的数据存储在此存储桶中。要了解更多信息,请参阅 导入的数据存储

重要

默认 Amazon S3 存储桶可能没有最不允许的安全设置,例如存储桶策略和服务器端加密 (SSE)。强烈建议您添加存储桶策略以限制对导入到 Data Wrangler 的数据集的访问.

重要

此外,如果您为 SageMaker 使用托管策略,我们强烈建议您将其范围缩小到允许您执行使用案例的限制性最强的策略。有关更多信息,请参阅 授予 IAM 角色使用 Data Wrangler 的权限

从 Amazon S3 导入数据

您可以使用 Amazon Simple Storage Service (Amazon S3) 随时在 Web 上的任何位置存储和检索的任意大小的数据。您可以使用Amazon Web Services Management Console,这是一个简单直观的 Web 界面,以及 Amazon S3 API。如果您已在本地存储数据集,我们建议您将其添加到 S3 存储桶以导入到 Data Wrangler 中。要了解如何操作,请参阅将对象上传到存储桶(Amazon Simple Storage Service 用户指南)。

数据 Wangler 使用S3 Select允许您在 Data Wrangler 中预览 Amazon S3 文件。每次文件预览都需要支付标准费用。要了解有关定价的更多信息,请参阅请求和数据检索选项卡Amazon S3 定价.

重要

如果您计划导出数据流并启动 Data Wrangler 作业,请将数据提取到 SageMaker feature store 或创建 SageMaker 管道,请注意,这些集成要求 Amazon S3 输入数据位于同一个Amazon区域。

重要

如果要导入 CSV 文件,请确保它满足以下要求:

  • 数据集中的记录不能超过一行。

  • 一个反斜杠,\,是唯一有效的转义字符。

  • 您的数据集必须使用以下分隔符之一:

    • 逗号 —,

    • 冒号 —:

    • 分号 —;

    • Pipe —|

    • Tab-[TAB]

为了节省空间,您可以导入压缩的 CSV 文件。

Data Wrangler 使您能够导入整个数据集或对其中的一部分进行采样。它提供了以下抽样选项:

  • 无 — 导入整个数据集。

  • 第一个 K — 对数据集的前 K 行进行采样,其中 K 是您指定的整数。

  • 随机化 — 获取您指定大小的随机样本。

导入数据后,还可以使用采样变换器从整个数据集中获取一个或多个样本。有关采样变压器的更多信息,请参阅采样.

您可以将单个文件或多个文件作为数据集导入。当数据集被分区为单独的文件时,可以使用多文件导入操作。它从 Amazon S3 目录中获取所有文件,并将其作为单个数据集导入。有关可导入的文件类型以及如何导入这些文件的信息,请参阅以下内容。

Single File Import

可以导入以下格式的单个文件:

  • 逗号分隔值 (CSV)

  • Parquet

  • Javascript 对象表示法 (JSON)

  • ORC 优化的行列式 (ORC)

对于以 JSON 格式化的文件,Data Wrangler 同时支持 JSON 行 (.jsonl) 和 JSON 文档 (.json)。当您预览数据时,它会自动以表格格式显示 JSON。对于大于 5 MB 的嵌套 JSON 文档,Data Wrangler 将结构架和数组的架构显示为数据集中的值。使用展平结构爆炸数组运算符以表格格式显示嵌套值。有关更多信息,请参阅 取消嵌套 JSON 数据分解数组

选择数据集时,可以对其进行重命名、指定文件类型并将第一行标识为标题。

您可以在单个导入步骤中导入已分区为 Amazon S3 存储桶中的多个文件的数据集。

要从存储在 Amazon S3 中的单个文件将数据集导入 Data Wrangler,请执行以下操作:

  1. 如果你目前没有使用导入选项卡上,选择导入.

  2. UNDER数据准备,选择Amazon S3要查看导入 S3 数据源查看。

  3. 从可用 S3 存储桶表中,选择存储桶并导航到要导入的数据集。

  4. 选择要导入的文件。如果您的数据集没有 .csv 或 .parquet 扩展名,请从文件类型下拉列表。

  5. 如果您的 CSV 文件具有标题,请选中旁边的复选框。将标头添加到表.

  6. 使用预览表来预览数据集。此表最多显示 100 行。

  7. 详细信息窗格中,验证或更改名称文件类型对于您的数据集。如果你添加名称如果包含空格,则导入数据集时,这些空格将被下划线替换为下划线。

  8. 指定要使用的采样配置。

  9. 选择导入数据集.

Multifile Import

以下是导入多个文件的要求:

  • 这些文件必须位于 Amazon S3 存储桶的同一文件夹中。

  • 这些文件必须共享相同的标头或者没有标题。

每个文件必须采用以下格式之一:

  • CSV

  • Parquet

  • ORC 优化的行列式 (ORC)

  • JSON

可以使用以下过程导入多个文件。

从存储在 Amazon S3 目录中的多个文件导入数据集到 Data Wrangler

  1. 如果你目前没有使用导入选项卡上,选择导入.

  2. UNDER数据准备,选择Amazon S3要查看导入 S3 数据源查看。

  3. 从可用 S3 存储桶表中,选择包含要导入的文件夹的存储桶。

  4. 选择包含要导入的文件的文件夹。每个文件必须采用支持的格式之一。您的文件必须是相同的数据类型。

  5. 如果您的文件夹包含带标题的 CSV 文件,请选中旁边的复选框。第一行是标题.

  6. 如果您的文件嵌套在其他文件夹中,请选中旁边的复选框。包括嵌套目录.

  7. (可选) 选择添加文件名列向数据集添加一列,该列显示每个观测值的文件名。

  8. (可选)默认情况下,Data Wrangler 不会向您显示文件夹的预览。你可以通过选择蓝色来激活预览关闭预览按钮。预览显示文件夹中前 10 个文件的前 10 行。下图显示了如何激活从嵌套目录创建的数据集的预览。

  9. 详细信息窗格中,验证或更改名称文件类型对于您的数据集。如果你添加名称如果包含空格,则导入数据集时,这些空格将被下划线替换为下划线。

  10. 指定要使用的采样配置。

  11. 选择导入数据集.

从 Athena 导入数据

Amazon Athena 是一种交互式查询服务,让您能够使用标准 SQL 直接在 Amazon S3 中轻松分析数据。只需在 Amazon Web Services Management Console 中执行几项操作,即可将 Athena 指向 Amazon S3 中存储的数据,并开始使用标准 SQL 运行临时查询,然后在几秒钟内获得结果。要了解更多信息,请参阅什么是 Amazon Athena?(在 Amazon Athena 用户指南中)。

您可以查询 Athena 数据库并将结果导入 Data Wrangler。要使用此导入选项,您必须在 Athena 中至少创建一个数据库。要了解如何操作,请参阅开始使用(在 Amazon Athena 用户指南中)。

请注意以下有关 Data Wrangler 中 Athena 导入选项的信息:

Data Wrangler 在同一中使用默认 Amazon S3 存储桶。AmazonStudio 实例所在的区域用于存储 Athena 查询结果。它在此数据库中创建临时表以将查询输出移动到此 Amazon S3 存储桶。它会在导入数据之后删除这些表;但是数据库,sagemaker_data_wrangler,仍然存在。要了解更多信息,请参阅 导入的数据存储

如果您使用Amazon Lake Formation使用 Athena,请确保您的 Lake Formation IAM 权限不会覆盖数据库的 IAM 权限sagemaker_data_wrangler.

从 Athena 将数据集导入 Data Wrangler

  1. 在存储库的导入数据屏幕上,选择Amazon Athena.

  2. 适用于Data Catalog中,选择一个数据目录。

  3. 使用数据库下拉列表以选择要查询的数据库。选择数据库时,可以使用s 在下面列出详细信息.

  4. 选择高级配置.

    启用采样默认处于选中状态。激活采样后,Data Wrangler 会对查询的数据进行采样并导入大约 50%。取消选中此复选框可关闭采样。

  5. 指定的值工作组如果您使用的是。

  6. 在查询编辑器中输入您的查询,然后使用运行按钮来运行查询。成功查询后,您可以在编辑器下预览结果。

  7. 要导入查询结果,请选择导入.

完成上述过程后,您查询和导入的数据集将显示在 Data Wrangler 流程中。

从 Amazon Redshift 导入数据

Amazon Redshift 是一种完全托管的 PB 级云中数据仓库服务。创建数据仓库的第一步是启动一组节点(称为 Amazon Redshift 集群)。在您预置集群后,您可以上传数据集,然后执行数据分析查询。

您可以在 Data Wrangler 中连接和查询一个或多个 Amazon Redshift 集群。要使用此导入选项,您必须在 Amazon Redshift 中至少创建一个集群。要了解如何操作,请参阅Amazon Redshift 入门.

您可以在以下位置之一输出 Amazon Redshift 查询的结果:

  • 默认 Amazon S3 存储桶

  • 您指定的 Amazon S3 输出位置

默认 Amazon S3 存储桶位于同一个状态Amazon您的 Studio 实例所在的区域用于存储 Amazon Redshift 查询结果。有关更多信息,请参阅 导入的数据存储

对于默认 Amazon S3 存储桶或您指定的存储桶,您都有以下加密选项:

  • 默认Amazon使用 Amazon S3 托管密钥 (SSE-S3) 进行服务端加密

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon Key Management Service您指定的 (KMS) 密钥

网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon KMSkey 是您创建和管理的加密密钥。有关 KMS 密钥的更多信息,请参阅Amazon Key Management Service.

您可以指定Amazon KMS密钥使用你的钥匙 ARN 或 ARNAmazonaccount.

如果您使用 IAM 托管策略,AmazonSageMakerFullAccess,要授予在 Studio 中使用 Data Wrangler 的角色权限,您的数据库用户名称必须具有前缀sagemaker_access.

使用以下过程了解如何添加新集群。

注意

Data Wrangler 将 Amazon Redshift 数据 API 与临时凭证结合使用。要了解有关此 API 的更多信息,请参阅使用 Amazon Redshift 数据 API在 Amazon Redshift 集群管理指南中。

连接到 Amazon Redshift 集群

  1. 选择 Import (导入)

  2. 选择+添加数据连接.

  3. 选择Amazon Redshift.

  4. 选择临时证书 (IAM)为了类型.

  5. 输入连接名称. 这是 Data Wrangler 用来识别此连接的名称。

  6. 输入Cluster Identifier指定要连接到哪个集群。注意:仅输入集群标识符,而不是 Amazon Redshift 集群的完整端点。

  7. 输入Database Name要连接到的数据库的数据库。

  8. 输入数据库用户以确定要用于连接到数据库的用户。

  9. 适用于卸载 IAM 角色中,输入 Amazon Redshift 集群在向 Amazon S3 移动和写入数据时应担任的角色的 IAM 角色 ARN。有关该角色的更多信息,请参阅授权 Amazon Redshift 访问其他Amazon代表您提供服务在 Amazon Redshift 集群管理指南中。

  10. 选择 Connect(连接)。

  11. (可选)对于Amazon S3 输出位置中,指定 S3 URI 以存储查询结果。

  12. (可选)对于KMS 密钥 ID,指定的 ARNAmazon KMS密钥或别名。下图显示了在哪里可以在Amazon Web Services Management Console.

下图显示了上述过程中的所有字段。

成功建立连接后,它将显示为下面的数据源导入数据. 选择此数据源可查询数据库并导入数据。

从 Redshift 查询和导入数据

  1. 选择要查询的连接数据源.

  2. 选择架构. 要了解有关 Amazon Redshift 模式的更多信息,请参阅Schemas在 Amazon Redshift 数据库开发人员指南中。

  3. UNDER高级配置启用采样默认处于选中状态。如果不取消选中此框,Data Wrangler 会对查询的数据进行抽样并导入大约 50% 的查询数据。取消选中此复选框可关闭采样。

  4. 在查询编辑器中输入您的查询,然后使用运行按钮来运行查询。成功查询后,您可以在编辑器下预览结果。

  5. Select导入数据集以导入已查询的数据集。

  6. 输入数据集名称. 如果你添加数据集名称如果包含空格,则导入数据集时,这些空格将被下划线替换为下划线。

  7. 选择 Add(添加)

从 Databricks (JDBC) 导入数据

您可以使用 Databricks 作为亚马逊的数据源 SageMaker 数据 Wrangler 流。要从 Databricks 导入数据集,请使用 JDBC(Java 数据库连接)导入功能访问 Databricks 数据库。访问数据库后,请指定 SQL 查询以获取数据并导入数据。

我们假设您有一个正在运行的 Databricks 集群,并且您已经为其配置了 JDBC 驱动程序。有关更多信息,请参阅以下 Databricks 文档页面:

数据 Wrangler 将你的 JDBC URL 存储在Amazon Secrets Manager. 你必须给你的亚马逊 SageMaker Studio IAM 执行角色使用 Secrets Manager 的权限。可以使用以下过程授予权限。

要将权限授予 Secrets Manager,请执行以下操作。

  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 选择 Roles(角色)。

  3. 在搜索栏中,指定亚马逊 SageMaker Amazon 的执行角色 SageMaker 工作室正在使用。

  4. 选择 角色。

  5. 选择 Add permissions(添加权限)。

  6. 选择创建内联策略.

  7. 适用于服务,请指定Secrets Manager然后选择它。

  8. 适用于操作中,选择旁边的箭头图标权限管理.

  9. 选择PutResourcePolicy.

  10. 适用于资源,选择特定.

  11. 选中旁边的复选框此账户中的任何.

  12. 选择 Review policy (审核策略)

  13. 适用于名称,指定名称。

  14. 选择 Create policy(创建策略)。

您可以使用分区更快地导入数据。分区使 Data Wrangler 能够 parallel 处理数据。默认情况下,Data Wrangler 使用 2 个分区。对于大多数用例,2 个分区可为您提供近乎最佳的数据处理速度。

如果选择指定 2 个以上的分区,还可以指定一列来对数据进行分区。列中值的类型必须是数字或日期。

我们建议仅在您了解数据的结构以及如何处理数据时才使用分区。

使用以下过程从 Dabricks 数据库中导入您的数据。

要从 Databricks 导入数据,请执行以下操作。

  1. 登录Amazon SageMaker 控制台.

  2. 选择工作室.

  3. 选择启动应用.

  4. 从下拉菜单中,选择工作室.

  5. 导入数据数据 Wrangler 流程的选项卡,选择添加数据源.

  6. SelectDatabricks (JDBC).

    
                        Databricks (JDBC)位于屏幕的右上角。
  7. 指定以下字段:

    • 数据集名称— 要用于 Data Wrangler 流中的数据集的名称。

    • 驱动程序com.simba.spark.jdbc.驱动程序.

    • JDBC URL— Databricks 数据库的 URL。Databricks 实例的 URL 格式可能会有所不同。有关查找 URL 并在其中指定参数的信息,请参阅JDBC 配置和连接参数. 以下是如何格式化 URL 的示例:jdbc: spark: //aws-sagemaker-datawrangler.cloud.data ricks.com:443/ 默认; 传输模式 = HTTP; ssl=1; HTTPath = SQL/协议 v1/O/3121950175/0909-200301-cut318; authmech=3; UIDH=1; httppath=SQL/协议v1/O3261950175/0909-200301-cut318; uidmech=3代币; PWD=个人访问令牌.

  8. 指定 SQL SELECT 语句。

  9. (可选)启用采样使用数据集的前 50,000 行。这是导入数据的默认设置。对于大型数据集,如果不对数据进行采样,可能需要很长时间才能导入数据。要导入整个数据集,请关闭采样。

  10. 选择 Run(运行)。下图显示了激活采样的查询。

    
                        SQL 查询框位于您指定 JDBC URL 的框下方。
  11. (可选)对于预览,选择要打开的齿轮分区设置. 下图显示了指定了可选数据分区设置的查询。

    
                        额外设置的装备位于预览标题。
    1. 指定分区的数量。如果指定分区数,则可以按列进行分区:

      • 输入分区数— 指定一个大于 2 的值。

      • (可选)按列分区— 指定以下字段。如果指定了值,则只能按列进行分区输入分区数.

        • Select 列— 用于数据分区的列。列的数据类型必须是数字或日期。

        • 上限— 从你指定的列中的值中,你在分区中使用的上限值。您指定的值不会更改要导入的数据。它只会影响导入的速度。为了获得最佳性能,请指定接近列最大值的上限。

        • 下限— 从你指定的列中的值中,你在分区中使用的下限值。您指定的值不会更改要导入的数据。它只会影响导入的速度。为了获得最佳性能,请指定接近该列最低值的下限。

  12. 选择 Import (导入)

从 Snowflake 导入数据

你可以使用 Snowflake 作为数据源 SageMaker Data Wrangler 用 Snowflake 为机器学习准备数据。

利用 Snowflake 作为 Data Wrangler 中的数据源,无需编写一行代码即可快速连接到 Snowflake。此外,您可以将 Snowflake 中的数据与存储在 Amazon S3 中的数据以及通过 Amazon Athena 和 Amazon Redshift 查询的数据加入 Snowflake 中,以便为机器学习准备数据。

连接后,您可以通过一组强大的预配置可视化模板以交互方式查询存储在 Snowflake 中的数据、使用 300 多种预配置的数据转换来转换数据、了解数据并识别潜在错误和极端值,快速识别数据中的不一致性准备工作流程,并在模型部署到生产之前诊断问题。最后,您可以将数据准备工作流程导出到 Amazon S3 以便与其他 SageMaker 亚马逊之类的功能 SageMaker Autopilot,亚马逊 SageMaker Amazon Feature Store 和 Amazon SageMaker 模型构建管道。

您可以使用加密查询的输出Amazon Key Management Service您创建的密钥。有关 Amazon KMS 的更多信息,请参阅Amazon Key Management Service

管理员指南

重要

要了解有关精确访问控制和最佳实践的更多信息,请参安全访问控制.

本部分适用于从内部设置对 Snowflake 的访问权限的 Snowflake 管理员 SageMaker DATA Wangler。

重要

管理员负责管理和监控 Snowflake 中的访问控制。这包括用户可以访问哪些数据、用户可以使用的存储集成以及用户可以运行哪些查询。Data Wrangler 不会添加与 Snowflake 相关的访问控制层。

重要

请注意,授予监视器权限可以允许用户查看对象内的详细信息,例如查询或仓库中的使用情况。

使用数据牧马人配置 Snowflake

要从 Snowflake 导入数据,Snowflake 管理员必须使用 Amazon S3 配置来自 Data Wrangler 的访问权限。

此功能目前在选择加入区域不可用。

要配置访问,请按照以下步骤操作。

  1. 配置 S3 存储桶的访问权限。

    Amazon访问控制要求

    Snowflake 需要对 S3 存储桶和目录具有以下权限才能访问目录中的文件。

    • s3:GetObject

    • s3:GetObjectVersion

    • s3:ListBucket

    • s3:ListObjects

    • s3:GetBucketLocation

    创建 IAM 策略

    以下步骤介绍了如何在您的Amazon管理控制台以便您可以使用 S3 存储桶加载和卸载数据:

    • 登录到Amazon管理控制台。

    • 从主控制面板中,选择IAM.

    • 选择策略

    • 请选择创建策略

    • 选择 JSON 选项卡。

    • 添加允许 Snowflake 访问 S3 存储桶和目录的策略文档。

      以下策略(JSON 格式)为 Snowflake 提供了使用单个存储桶和目录路径加载和卸载数据所需的权限。请确保更换bucketprefix带有实际存储桶名称和目录路径前缀。

      # Example policy for S3 write access # This needs to be updated { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": "arn:aws:s3:::bucket/prefix/*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::bucket/", "Condition": { "StringLike": { "s3:prefix": ["prefix/*"] } } } ] }
    • 选择 Next:。标签

    • 选择 Next:。审核

      输入策略名称(如snowflake_access)和可选的描述。选择 Create policy(创建策略)。

  2. 在创建 IAM 角色Amazon.

  3. 在 Snowflake 中创建云存储集成.

  4. 检索Amazon您的 Snowflake 账户的 IAM 用户.

  5. 授予 IAM 用户访问存储桶的权限.

  6. 向数据科学家的 Snowflake 角色授予存储集成使用权限。

    • 在 Snowflake 控制台中,运行GRANT USAGE ON INTEGRATION integration_name TO snowflake_role;

      • integration_name是存储集成的名称。

      • snowflake_role默认值的名称Snowflake 角色给数据科学家用户。

向数据科学家提供信息

向数据科学家提供从亚马逊访问 Snowflake 所需的信息 SageMaker DATA Wangler。

  1. 允许数据科学家访问 Snowflake SageMaker Data Wrangler,为他们提供以下服务之一:

    • Snowflake 帐户名称、用户名称和密码。

    • 用创建的秘密AmazonSecrets Manager和密钥的 ARN。如果选择此选项,请使用以下步骤为 Snowflake 创建秘密。

      重要

      如果你的数据科学家使用Snowflake 凭证 (用户名和密码)选项连接到 Snowflake,请注意Secrets Manager用于将证书存储在密钥中,并作为最佳实践安全计划的一部分轮换密钥。只有在设置 Studio 用户配置文件时配置的 Studio 角色才能访问在 Secret Secrets Manager 中创建的密钥。这需要您添加此权限,secretsmanager:PutResourcePolicy附加到 Studio 角色的策略。

      我们强烈建议您将角色策略的范围限定为不同的 Studio 用户组使用不同的角色。您可以为 Secrets Manager 添加其他基于资源的权限。请参阅管理秘密策略对于您可以使用的条件键。

      • 为 Snowflake 创建 Secrets Manager 密钥.

        • 登录到Secrets Manager 控制台.

        • 选择 Store a new secret (存储新密钥)

        • 选择密钥类型部分,选择其他密钥类型.

        • 将自定义密钥的详细信息指定为键值对。密钥的名称区分大小写:username密钥必须username,密码密钥必须是password,并且账户 ID 密钥必须是accountid. 如果您输入的任何错误,Data Wrangler 将引发错误。的报价usernamepassword, 和accountid如果您使用的是密钥值,则不是必需的。或者,您可以选择明文选项卡,然后在 JSON 中输入密钥值,如以下示例所示:

          { "username": "snowflake username", "password": "snowflake password", "accountid": "snowflake accountid" }
        • 选择下一步,然后在下面的屏幕上,在你的秘密名称前加上AmazonSageMaker-. 此外,使用密钥添加标签 SageMaker (不带引号)和值:true(不带引号)。其余字段是可选的。您可以滚动到页面底部并选择下一步. 屏幕的其余部分是可选的。选择下一步 直到秘密被存储。

        • 选择密钥名称并保存密钥的 ARN。选择 Store (存储)。

        • 选择您创建的密钥。

        • 你在屏幕上看到你的 ARN。如果数据科学家正在使用 ARN 连接到 Snowflake,请向他们提供 ARN。

  2. 向数据科学家提供您在步骤 3 中创建的存储集成的名称:在 Snowflake 中创建云存储集成. 这是新集成的名称,被称为integration_name中的CREATE INTEGRATION您运行的 SQL 命令,如以下代码段所示:

    CREATE STORAGE INTEGRATION integration_name TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = S3 ENABLED = TRUE STORAGE_AWS_ROLE_ARN = 'iam_role' [ STORAGE_AWS_OBJECT_ACL = 'bucket-owner-full-control' ] STORAGE_ALLOWED_LOCATIONS = ('s3://bucket/path/', 's3://bucket/path/') [ STORAGE_BLOCKED_LOCATIONS = ('s3://bucket/path/', 's3://bucket/path/') ]

数据科学家指南

本节概述了如何从 SageMaker Data Wrangler 内部访问 Snowflake 数据仓库以及如何使用 Data Wrangler 功能。

重要

注意:管理员需要遵循上一节中设置的管理指南,然后才能在 Snowflake 中使用 Data Wrangler。

可以使用以下过程打开 Amazon SageMaker Studio 并查看您正在运行的版本。

要打开 Studio 并检查其版本,请参阅以下过程。

  1. 使用中的步骤先决条件通过亚马逊访问 Data Wrangler SageMaker Studio。

  2. 在要用于启动 Studio 的用户旁边,选择启动应用.

  3. 选择工作室.

  4. 加载 Studio 后,选择File (文件),那么New,然后终端.

  5. 启动 Studio 后,选择File (文件),那么New,然后终端.

  6. Entercat /opt/conda/share/jupyter/lab/staging/yarn.lock | grep -A 1 "@amzn/sagemaker-ui-data-prep-plugin@"以打印 Studio 实例的版本。要使用 Snowflake,您必须拥有 Studio 1.3.0 版本。

请按照以下步骤检查您是否正在运行版本 1.3.0 或更高版本。

要检查 Studio 版本,请执行以下操作。

  1. 如果你没有此版本,请更新你的 Studio 版本。为此,请关闭 Studio 窗口并导航到SageMaker Studio 控制台.

  2. 接下来,选择用于访问 Studio 的用户,然后选择删除应用. 删除完成后,通过选择选择重新启动 Studio打开工作室.

  3. 再次按照步骤 3 验证您的 Studio 版本是 1.3.0。

可以使用以下过程连接到 Snowflake。

  1. 从 Data Wrangler 内部创建新的数据流

    从 Studio 中访问 Data Wrangler 并拥有 1.3.0 版本后,请选择+登录新的数据流下卡ML 任务和组件. 这将在 Studio 中创建一个包含 .flow 文件的新目录,其中包含数据流。.flow 文件将在 Studio 中自动打开。

    或者,您也可以通过选择创建新流程。File (文件),那么New,然后选择.

    在 Studio 中创建新的 .flow 文件时,您可能会在 Data Wrangler 界面顶部看到一条消息,其中显示:

    连接到引擎

    正在建立与引擎的连接...

  2. Connect 到雪花。

    可通过两种方式从 Data Wrangler 内部连接到 Snowflake。你只需要选择两种方法中的一种。

    1. 在 Data Wrangler 中指定 Snowflake 凭据(帐户名称、用户名和密码)。

    2. 提供密钥的 Amazon 资源名称 (ARN)。

    重要

    如果你没有 Snowflake 凭据或 ARN,请联系管理员。管理员可以告诉你以上哪种方法连接到 Snowflake。

    从 “开始”导入数据屏幕然后首先选择添加数据源从下拉菜单中,选择雪花. 以下屏幕截图说明了在哪里可以找到雪花选项。

选择身份验证方法。对于此步骤,如前所述,您可以使用 Snowflake 凭据或 ARN 名称。其中之一是由您的管理员提供。

接下来,我们解释两种身份验证方法并为每种方法提供截图

  1. Snowflake 凭据选项.

    Select基本选项中的(用户名和密码)身份验证方法下拉列表。然后,在以下字段中输入您的凭证:

    • 存储集成:提供存储集成的名称。管理员提供了此名称。

    • Snowflake 账户名称:Snowflake 账户的全名。

    • 用户名:Snowflake 账户的用户名。

    • 密码:Snowflake 账户密码。

    • 连接名称:选择连接名称供您选择。

    • (可选)KMS 密钥 ID:选择Amazon KMS key对 Snowflake 查询的输出进行加密。有关 Amazon Key Management Service 的更多信息,请参阅https://docs.amazonaws.cn/kms/latest/developerguide/overview.html。如果您未指定Amazon KMS密钥,Data Wrangler 使用默认的 SSE-KMS 加密方法。

    选择 Connect(连接)。

    以下屏幕截图演示如何填写这些字段。

  2. ARN 选项

    身份验证方法下拉列表。然后,在下面提供你的 ARN 名称ARN Secrets Manager和你的存储集成,由您的管理员提供。如果您创建了 KMS 密钥,则可以将其 ID 指定为KMS 密钥 ID. 有关 Amazon Key Management Service 的更多信息,请参阅https://docs.amazonaws.cn/kms/latest/developerguide/overview.html。创建连接名称然后选择Connect (连接),如以下屏幕截图所示。

  3. 此时的工作流程是将 Snowflake 帐户连接到 Data Wrangler,然后对数据运行一些查询,然后最后使用 Data Wrangler 执行数据转换。

    以下步骤解释了 Data Wrangler 内部的导入和查询步骤。

    在创建 Snowflake 连接之后,您将其带到从 Snowflake 导入数据屏幕,如以下屏幕截图所示。

    从这里选择你的仓库。您还可以选择您的数据库和架构,在这种情况下,书面查询应该指定它们。如果数据库架构在下拉列表中提供,书面查询不需要指定数据库和架构名称。

    左侧面板中列出了 Snowflake 账户中的模式和表格。你可以选择和解开这些实体。选择特定表时,选择每个表名右侧的眼睛图标以预览表格。

    重要

    如果要导入包含类型列的数据集TIMESTAMP_TZ要么TIMESTAMP_LTZ添加::string转到查询的列名称。有关更多信息,请参阅 。如何:将 TIMESTAMP_TZ 和 TIMESAMP_LTZ 数据卸载到实木复合地板文件.

    以下屏幕截图显示了包含数据仓库、数据库和架构的面板,以及可用于预览表格的眼睛图标。一旦你选择了预览表格图标,将生成该表的模式预览。您必须先选择仓库,然后才能预览表格。

    选择数据仓库、数据库和架构后,您现在可以编写查询并运行查询。查询的输出显示在查询结果,如以下屏幕截图所示。

    在确定查询的输出之后,您可以将查询的输出导入 Data Wrangler 流程以执行数据转换。

    要执行此操作,请选择导入, t然后指定名称然后选择转到,如以下屏幕截图所示。

    从这里开始,过渡到数据流屏幕以准备您的数据转换,如以下屏幕截图所示。

数据 Wrangler 和 Snowflake 之间的私人连接方式Amazon PrivateLink

本部分介绍如何使用Amazon PrivateLink在 Data Wrangler 和 Snowflake 之间建立私有连接。以下各节将介绍这些步骤。

创建 VPC

如果您没有设置 VPC,请按照创建新 VPC创建一个的说明。

选择了要用于建立私有连接的 VPC 后,请向 Snowflake 管理员提供以下凭据以启用Amazon PrivateLink:

  • VPC ID.

  • Amazon账户 ID。

  • 您用于访问 Snowflake 的相应账户 URL。

重要

根据 Snowflake 的文档,启用 Snowflake 帐户最多可能需要两个工作日。

晚于Amazon PrivateLink已激活,检索Amazon PrivateLink通过在 Snowflake 工作表中运行以下命令为您所在区域进行配置。登录 Snowflakes 控制台,在工作表下输入以下内容:select SYSTEM$GET_PRIVATELINK_CONFIG();

  1. 检索以下内容的值:privatelink-account-nameprivatelink_ocsp-urlprivatelink-account-url, 和privatelink_ocsp-url从生成的 JSON 对象中。下面的代码段显示了每个值的示例。将这些值存储以便将来使用。

    privatelink-account-name: xxxxxxxx.region.privatelink privatelink-vpce-id: com.amazonaws.vpce.region.vpce-svc-xxxxxxxxxxxxxxxxx privatelink-account-url: xxxxxxxx.region.privatelink.snowflakecomputing.com privatelink_ocsp-url: ocsp.xxxxxxxx.region.privatelink.snowflakecomputing.com
  2. 切换到Amazon控制台然后导航到 VPC 菜单。

  3. 从左侧面板中,选择终端节点链接以导航到VPC 终端节点设置。

    一旦到达那里,选择创建终端节点.

  4. 选择单选按钮按名称查找服务,如以下屏幕截图所示。

  5. 服务名称字段中,粘贴的值privatelink-vpce-id在上一步中检索到的,然后选择Verify.

    如果连接成功,绿色警报表示已找到服务名称显示在您的屏幕上,VPC子网选项将自动展开,如以下屏幕截图所示。根据您的目标区域,生成的屏幕可能会显示另一个屏幕Amazon区域名称。

  6. 从中选择您发送给 Snowflake 的同一 VPC ID。VPC下拉列表。

  7. 如果尚未创建子网,请执行以下有关创建子网的说明。

  8. SelectSubnets来自 的VPC下拉列表。然后选择创建子网然后按照提示在 VPC 中创建子集。确保选择您发送的 Snowflake 的 VPC ID。

  9. UNDER安全组配置Select,创建新安全组打开默认设置安全组屏幕显示在新选项卡中。在这个新选项卡中,选择 t创建安全组.

  10. 为新安全组提供名称(例如datawrangler-doc-snowflake-privatelink-connection) 和描述。请务必选择您在之前的步骤中使用的 VPC ID。

  11. 添加两个规则以允许从您的 VPC 内部到此 VPC 终端节点的流量。

    在下导航到您的 VPC您的 VPC在单独的选项卡中,然后为 VPC 检索 CIDR 块。然后选择 。添加规则中的入站规则部分。SelectHTTPS对于类型,保留如同Custom (自定义)在表单中,然后粘贴从前面的中检索到的值describe-vpcs呼叫(例如10.0.0.0/16)。

  12. 选择 Create Security Group(创建安全组)。检索安全组 ID来自新创建的安全组(例如sg-xxxxxxxxxxxxxxxxx)。

  13. VPC 终端节点配置屏幕中,删除默认安全组。将安全组 ID 粘贴到搜索字段中,然后选中该复选框。

  14. Select创建终端节点.

  15. 如果终端节点创建成功,您将看到一个页面,其中包含指向 VPC 终端节点配置的链接,该页面由 VPC ID 指定。选择链接可查看完整配置。

    检索 DNS 名称列表中最顶层的记录。这可以与其他 DNS 名称区分开来,因为它只包含区域名称(例如us-west-2),并且没有可用区域字母表示法(例如us-west-2a)。请将此信息存储以便将来使用。

本部分介绍如何在 VPC 中为 Snowflake 终端节点配置 DNS。这允许您的 VPC 解决对 Snowflake 的请求Amazon PrivateLink终端节点。

  1. 导航到Route 53 菜单在您的Amazon控制台。

  2. Select托管区域选项(如有必要,请展开左侧菜单以找到此选项)。

  3. 选择 Create Hosted Zone(创建托管区域)。

    1. 域名字段中,引用存储的值privatelink-account-url在前面的步骤中。在此字段中,您的 Snowflake 账户 ID 将从 DNS 名称中删除,并且仅使用以区域标识符开头的值。一个资源记录集稍后也为子域创建,例如,region.privatelink.snowflakecomputing.com.

    2. 选择单选按钮私有托管区域中的类型部分。你的地区代码可能不是us-west-2. 请参考 Snowflake 返回给你的 DNS 名称。

    3. 要与托管区域关联的 VPC部分中,选择 VPC 所在的区域和之前步骤中使用的 VPC ID。

    4. 选择 Create Hosted Zone(创建托管区域)。

  4. 接下来,创建两条记录,一条用于privatelink-account-url另一个用于privatelink_ocsp-url.

    • 托管区域选择菜单,选择创建记录集.

      1. UNDER记录名称中,仅输入您的 Snowflake 账户 ID(中的前 8 个字符)privatelink-account-url)。

      2. UNDER记录类型Select,CNAME.

      3. UNDER中,输入您在最后一步中检索的区域 VPC 终端节点的 DNS 名称设置雪花Amazon PrivateLink集成部分。

      4. 选择创建记录

      5. 对我们标记为的 OCSP 记录重复上述步骤。privatelink-ocsp-url,从开头ocsp通过 8 个字符的 Snowflake ID 作为记录名称(例如ocsp.xxxxxxxx)。

本部分介绍了如何为 VPC 配置 Route 53 解析器入站端点。

  1. 导航到Route 53 菜单在您的Amazon控制台。

    • 在左侧面板中的安全部分,选择个安全组选项。

  2. 选择 Create Security Group(创建安全组)。

    • 为安全组提供名称(例如datawranger-doc-route53-resolver-sg) 和描述。

    • 选择之前步骤中使用的 VPC ID。

    • 创建允许从 VPC CIDR 块内通过 UDP 和 TCP 进行 DNS 的规则。

    • 选择 Create Security Group(创建安全组)。注意安全组 ID因为添加了一条规则以允许流量到 VPC 终端节点安全组。

  3. 导航到Route 53 菜单在您的Amazon控制台。

    • 解析程序部分,选择入站端节点选项。

  4. 选择创建入站端节点.

    • 提供终端节点名称。

    • 该地区的 VPC下拉列表中,选择您在之前所有步骤中使用的 VPC ID。

    • 此终端节点的安全组下拉列表中,从本部分的步骤 2 中选择安全组 ID。

    • IP 地址部分中,选择一个可用区,选择一个子网,然后将无线电选择器留下使用自动选择的 IP 地址为每个 IP 地址选择。

    • 选择 Submit(提交)

  5. Select入站端节点在创建之后。

  6. 创建入站终端节点后,请记下解析程序的两个 IP 地址。

SageMaker VPC 终端节点

本部分介绍如何为以下目的创建 VPC 终端节点:亚马逊 SageMaker Studio SageMaker 笔记本, SageMaker API, SageMaker 运行时和亚马逊 SageMaker 功能商店运行时。

创建应用于所有终端节点的安全组。

  1. 导航到EC2 菜单中的Amazon控制台。

  2. 网络与安全部分,选择安全组选项。

  3. 选择创建安全组

  4. 提供安全组名称和说明(例如:datawrangler-doc-sagemaker-vpce-sg)。稍后会添加一条规则以允许来自 HTTPS 的流量 SageMaker 到这个组中。

创建终端节点

  1. 导航到VPC 菜单中的Amazon控制台。

  2. Select终端节点选项。

  3. 选择 Create Endpoint(创建端点)

  4. 通过在搜索字段中返回的子位置类型。

  5. VPC下拉列表中,选择 Snowflake 所在的 VPCAmazon PrivateLink连接存在。

  6. Subnets部分中,选择有权访问 Snowflake 的子网 PrivateLink 连接。

  7. 离开启用 DNS 名称选中复选框。

  8. 个安全组部分中,选择在上一部分中创建的安全组。

  9. 选择 Create Endpoint(创建端点)

配置工作室和数据牧马人

本部分介绍如何配置 Studio 和 Data Wrangler。

  1. 配置安全组。

    1. 导航到中的 Amazon EC2 菜单Amazon控制台。

    2. Select个安全组中的选项网络与安全部分。

    3. 选择 Create Security Group(创建安全组)。

    4. 为您的安全组提供名称和描述(例如:datawrangler-doc-sagemaker-studio)。

    5. 创建以下入站规则。

      • 与您为 Snowflake 配置的安全组的 HTTPS 连接 PrivateLink 在中创建的连接设置雪花 PrivateLink 集成Step.

      • 与您为 Snowflake 配置的安全组的 HTTP 连接 PrivateLink 在中创建的连接设置雪花 PrivateLink 集成步骤.

      • 您在第 2 步中创建的 DNS(端口 53)到 Route 53 解析程序入站端点安全组的 UDP 和 TCP为您的 VPC 配置 Route 53 解析器入站终端节点.

    6. 选择创建安全组右下角的按钮。

  2. 配置 Studio。

    • 导航到 SageMaker 在菜单Amazon控制台。

    • 从左侧控制台中,选择SageMaker Studio选项。

    • 如果您没有配置任何域,开始使用已存在菜单。

    • Select标准设置选项来自开始使用菜单。

    • UNDER身份验证方法Select,AmazonIdentity and Access Management (IAM).

    • Permissions (权限)菜单中,您可以创建新角色或使用预先存在的角色,具体取决于您的使用案例。

      • 如果选择创建新角色,您将获得提供 S3 存储桶名称的选项,并为您生成策略。

      • 如果您已经创建了具有需要访问权限的 S3 存储桶的角色,请从下拉列表中选择角色。这个角色应该有AmazonSageMakerFullAccess附加到它的策略。

    • Select网络和存储用于配置 SageMaker 使用的 VPC、安全性和子网的下拉列表。

      • UNDERVPC中,选择您的 Snowflake 所在的 VPC PrivateLink 连接存在。

      • UNDER子网中,选择有权访问 Snowflake PrivateLink 连接的子网。

      • UNDERStudio 的网络访问Select,仅限 VPC.

      • UNDER安全组选择您在步骤 1 中创建的安全组。

    • 选择 Submit(提交)

  3. 编辑 SageMaker 安全组。

    • 创建以下入站规则:

      • 端口 2049 到自动创建的入站和出站 NFS 安全组 SageMaker 在步骤 2 中(安全组名称包含 Studio 域 ID)。

      • 访问自己的所有 TCP 端口(仅适用于 VPC 的 SageMaker 需要)。

  4. 编辑 VPC 终端节点安全组:

    • 导航到中的 Amazon EC2 菜单Amazon控制台。

    • 找到在上一步中创建的安全组。

    • 添加入站规则,允许来自步骤 1 中创建的安全组的 HTTPS 流量。

  5. 创建用户配置文件。

    • SageMaker Studio 控制面板,选择添加用户.

    • 提供用户名称。

    • 对于执行角色,选择创建新角色或使用预先存在的角色。

      • 如果选择创建新角色,您可以选择提供 Amazon S3 存储桶名称,并为您生成策略。

      • 如果您已经创建了一个角色,具有访问您需要访问的 Amazon S3 存储桶的权限,请从下拉列表中选择角色。这个角色应该有AmazonSageMakerFullAccess附加到它的策略。

    • 选择 Submit(提交)

  6. 创建数据流(遵循上一节中概述的数据科学家指南)。

    • 添加 Snowflake 连接时,请输入值privatelink-account-name(来自的)设置雪花 PrivateLink 集成步骤)进入Snowflake 账户名称(字母数字)字段,而不是普通的 Snowflake 帐户名称。其他一切都保持不变。

导入的数据存储

重要

我们强烈建议您遵循关注保护 Amazon S3 存储桶的最佳实践。安全最佳实践.

当您查询来自 Amazon Athena 或 Amazon Redshift 的数据时,查询的数据集将自动存储在 Amazon S3 中。数据存储在默认情况下 SageMaker 用于Amazon您正在使用 Studio 的区域。

默认 S3 存储桶具有以下命名约定:sagemaker-region-account number. 例如,如果您的账号是 111122223333,并且您在中使用 Studio(Studio)是:us-east-1,导入的数据集存储在sagemaker-us-east-1-111122223333。

Data Wrangler 流程取决于此 Amazon S3 数据集位置,因此在使用相关流程时,您不应在 Amazon S3 中修改此数据集。如果您确实修改了此 S3 位置,并且要继续使用数据流,则必须删除中的所有对象trained_parameters在你的 .flow 文件中。为此,请从 Studio 下载 .flow 文件,并为每个实例下载trained_parameters中,删除所有条目。完成后,trained_parameters应该是一个空的 JSON 对象:

"trained_parameters": {}

当您导出并使用数据流处理数据时,您导出的 .flow 文件会引用 Amazon S3 中的此数据集。请参阅以下部分了解更多信息。

Amazon Redshift 导入存储

Data Wrangler 在默认情况下将查询生成的数据集存储在 Picth 文件中 SageMaker S3 存储桶。

此文件存储在以下前缀(目录)下:redshift/uuid/data/,其中uuid是为每个查询创建的唯一标识符。

例如,如果您的默认存储桶是sagemaker-us-east-1-111122223333,从 Amazon Redshift 查询的单个数据集位于 s3: //sagemaker-us-east-1-111122223333/redshift/uuid/data/。

Amazon Athena 导入存储

当您查询 Athena 数据库并导入数据集时,Data Wrangler 会存储该数据集以及该数据集的子集,或者预览文件,在 Amazon S3 中。

通过选择导入的数据集导入数据集在 Amazon S3 中以 Parquet 格式存储。

选择时,预览文件将以 CSV 格式编写运行在 Athena 导入屏幕上,最多包含所查询数据集中的 100 行。

您查询的数据集位于前缀(目录)下:athena/uuid/data/,其中uuid是为每个查询创建的唯一标识符。

例如,如果您的默认存储桶是sagemaker-us-east-1-111122223333,从 Athena 查询的单个数据集位于s3://sagemaker-us-east-1-111122223333/athena/uuid/data/例 _data et.镶木地板/镶木地板.

存储用于在 Data Wrangler 中预览数据框的数据集的子集存储在前缀:athena/。