使用无服务器 AWS Glue 交互式会话 PlatoBlockchain Data Intelligence 在 Amazon SageMaker Studio 中大规模准备数据。 垂直搜索。 哎。

使用无服务器 AWS Glue 交互式会话在 Amazon SageMaker Studio 中大规模准备数据

亚马逊SageMaker Studio 是第一个用于机器学习 (ML) 的完全集成的开发环境 (IDE)。 它提供了一个基于 Web 的单一可视界面,您可以在其中执行所有 ML 开发步骤,包括准备数据以及构建、训练和部署模型。

AWS胶水 是一种无服务器数据集成服务,可以轻松发现、准备和组合数据以进行分析、ML 和应用程序开发。 AWS Glue 使您能够使用各种功能无缝收集、转换、清理和准备数据以存储在数据湖和数据管道中,包括 内置变换.

数据工程师和数据科学家现在可以使用 Studio notebook 与 AWS Glue 管理的无服务器 Spark 会话的内置集成,以交互方式大规模准备数据。 在几秒钟内启动并在空闲时自动停止计算, AWS Glue 交互式会话 提供按需、高度可扩展、无服务器的 Spark 后端,以在 Studio 中实现可扩展的数据准备。 在 Studio 笔记本上使用 AWS Glue 交互式会话的显着优势包括:

  • 没有要配置或管理的集群
  • 无需支付闲置集群
  • 无需预先配置
  • 同一开发环境无资源争用
  • 与 AWS Glue 提取、转换和加载 (ETL) 作业完全相同的无服务器 Spark 运行时和平台

在这篇文章中,我们将向您展示如何使用无服务器 AWS Glue 交互式会话在 Studio 中大规模准备数据。

解决方案概述

要实施此解决方案,您需要完成以下高级步骤:

  1. 更新你的 AWS身份和访问管理 (IAM) 角色权限。
  2. 启动 AWS Glue 交互式会话内核。
  3. 配置您的交互式会话。
  4. 自定义您的交互式会话并运行可扩展的数据准备工作负载。

更新您的 IAM 角色权限

首先,您需要使用所需权限更新 Studio 用户的 IAM 执行角色。 有关详细说明,请参阅 SageMaker Studio 中 Glue 交互式会话的权限.

您首先将托管策略添加到您的执行角色:

  1. 在IAM控制台上,选择 角色 在导航窗格中。
  2. 找到您将使用的 Studio 执行角色,然后选择角色名称以转到角色摘要页面。
  3. 点击 权限 选项卡,在 添加权限 菜单中选择 附加政策.
  4. 选择托管策略 AmazonSageMakerFullAccessAwsGlueSessionUserRestrictedServiceRole
  5. 附加政策.
    摘要页面显示您新添加的托管策略。现在您添加自定义策略并将其附加到您的执行角色。
  6. 点击 添加权限 菜单中选择 创建内联策略.
  7. 点击 JSON 选项卡,输入以下策略:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "iam:GetRole",
                    "iam:PassRole",
                    "sts:GetCallerIdentity"
                ],
                "Resource": "*"
            }
        ]
    }

  8. 修改角色的信任关系:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": [
                        "glue.amazonaws.com",
                        "sagemaker.amazonaws.com"
                    ]
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }

启动 AWS Glue 交互式会话内核

如果您的 Studio 域中已有用户,您可能需要拥有他们 关闭并重新启动他们的 Jupyter 服务器 获取新的笔记本内核映像。

重新加载后,您可以创建一个新的 Studio 笔记本并 选择您喜欢的内核。 内建 SparkAnalytics 1.0 映像现在应该可用,您可以选择您喜欢的 AWS Glue 内核 (胶水 Scala Spark or 胶水 PySpark).

配置您的交互式会话

您可以在初始化之前使用笔记本单元魔术轻松配置 AWS Glue 交互式会话。 魔术是在 Jupyter 单元格开头以 % 为前缀的小命令,提供控制环境的快捷方式。 在 AWS Glue 交互式会话中,魔法用于所有配置需求,包括:

  • %地区 – 初始化会话的 AWS 区域。 默认为工作室区域。
  • %iam_角色 – 用于运行会话的 IAM 角色 ARN。 默认值为用户的 SageMaker 执行角色。
  • %worker_type ——由数百家创建、维护和提供物联网(IoT)全球开放标准的公司所组成的 AWS Glue 工作人员类型. 默认为标准。
  • %number_of_workers – 作业运行时分配的工人数。 默认值为五。
  • %空闲超时 – 会话超时之前的非活动分钟数。 默认值为 2,880 分钟。
  • %additional_python_modules – 要包含在集群中的其他 Python 模块的逗号分隔列表。 这可以来自 PyPi 或 亚马逊简单存储服务 (亚马逊S3)。
  • %%配置 – 一个 JSON 格式的字典,包括 AWS Glue 特定的配置参数 一个会话。

有关此内核的可配置魔术参数的完整列表,请使用 %help 笔记本中的魔法。

在运行第一个非魔术单元之前,您的 AWS Glue 交互式会话不会开始。

自定义您的交互式会话并运行数据准备工作负载

例如,以下笔记本单元显示了您可以如何自定义 AWS Glue 交互式会话并运行可扩展的数据准备工作负载。 在此示例中,我们执行 ETL 任务来汇总给定城市的空气质量数据,按一天中的时间分组。

我们将会话配置为将 Spark 日志保存到 S3 存储桶以进行实时调试,我们将在本文后面看到。 确保 iam_role 正在运行您的 AWS Glue 会话的服务器对指定的 S3 存储桶具有写入权限。

%help

%session_id_prefix air-analysis-
%glue_version 3.0
%idle_timeout 60
%%configure
{
"--enable-spark-ui": "true",
"--spark-event-logs-path": "s3://<BUCKET>/gis-spark-logs/"
}

接下来,我们直接从 Amazon S3 加载数据集。 或者,您可以 使用您的 AWS Glue 数据目录加载数据.

from pyspark.sql.functions import split, lower, hour
print(spark.version)
day_to_analyze = "2022-01-05"
df = spark.read.json(f"s3://openaq-fetches/realtime-gzipped/{day_to_analyze}/1641409725.ndjson.gz")
df_air = spark.read.schema(df.schema).json(f"s3://openaq-fetches/realtime-gzipped/{day_to_analyze}/*")

最后,我们将转换后的数据集写入我们定义的输出桶位置:

df_city = df_air.filter(lower((df_air.city)).contains('delhi')).filter(df_air.parameter == "no2").cache()
df_avg = df_city.withColumn("Hour", hour(df_city.date.utc)).groupBy("Hour").avg("value").withColumnRenamed("avg(value)", "no2_avg")
df_avg.sort("Hour").show()

# Examples of reading / writing to other data stores: 
# https://github.com/aws-samples/aws-glue-samples/tree/master/examples/notebooks

df_avg.write.parquet(f"s3://<BUCKET>/{day_to_analyze}.parquet")

完成工作后,您只需关闭 Studio 笔记本内核即可立即结束 AWS Glue 交互式会话,也可以使用 %stop_session 魔力。

调试和 Spark UI

在前面的示例中,我们指定了 ”--enable-spark-ui”: “true” 论据以及 "--spark-event-logs-path": location. 这会将我们的 AWS Glue 会话配置为记录会话日志,以便我们可以利用 Spark UI 实时监控和调试我们的 AWS Glue 作业。

有关启动和读取这些 Spark 日志的过程,请参阅 启动 Spark 历史服务器. 在以下屏幕截图中,我们启动了一个本地 Docker 容器,该容器有权读取包含我们的日志的 S3 存储桶。 或者,您可以主持一个 亚马逊弹性计算云 (Amazon EC2) 实例来执行此操作,如前面的链接文档中所述。

使用无服务器 AWS Glue 交互式会话 PlatoBlockchain Data Intelligence 在 Amazon SageMaker Studio 中大规模准备数据。 垂直搜索。 哎。

定价

当您在 Studio 笔记本上使用 AWS Glue 交互式会话时,您需要为 AWS Glue 和 Studio 笔记本上的资源使用单独付费。

AWS 根据会话的活动时间和使用的数据处理单元 (DPU) 的数量对 AWS Glue 交互式会话收费。 您需要为用于运行工作负载的 DPU 数量按小时收费,以 1 秒为增量计费。 AWS Glue 交互式会话默认分配 5 个 DPU,并且至少需要 2 个 DPU。 每个交互式会话还有 1 分钟的最短计费时间。 要查看 AWS Glue 费率和定价示例,或使用 AWS 定价计算器估算您的成本,请参阅 AWS Glue 定价.

您的 Studio 笔记本在 EC2 实例上运行,并根据使用持续时间为您选择的实例类型付费。 当您选择 SparkAnalytics 图像和相关的内核。 您可以更改 Studio 笔记本的实例类型以适应您的工作负载。 有关 SageMaker Studio 定价的信息,请参阅 Amazon SageMaker定价.

结论

Studio 笔记本与 AWS Glue 交互式会话的原生集成有助于为数据科学家和数据工程师进行无缝且可扩展的无服务器数据准备。 我们鼓励您在 Studio 中试用这一新功能!

我们 使用 AWS Glue 交互式会话准备数据 获取更多信息.


关于作者

肖恩·摩根(Sean Morgan)肖恩·摩根(Sean Morgan) 是 AWS 的高级 ML 解决方案架构师。 他在半导体和学术研究领域拥有丰富的经验,并利用自己的经验帮助客户在 AWS 上实现目标。 在空闲时间,Sean 是一名活跃的开源贡献者/维护者,并且是 TensorFlow Addons 的特殊兴趣小组负责人。

使用无服务器 AWS Glue 交互式会话 PlatoBlockchain Data Intelligence 在 Amazon SageMaker Studio 中大规模准备数据。 垂直搜索。 哎。苏梅达斯瓦米 是 Amazon Web Services 的首席产品经理。 他带领 SageMaker Studio 团队将其构建为交互式数据科学和数据工程工作流的首选 IDE。 在过去的 15 年中,他一直在使用机器学习构建客户痴迷的消费者和企业产品。 在空闲时间,他喜欢拍摄美国西南部令人惊叹的地质情况。

时间戳记:

更多来自 AWS机器学习