AWS 于 2018 年推出了 AWS Glue Python shell 作业 AWS 于 2018 年推出了 AWS Glue Python shell 作业,目的是为客户提供一种简便的方法来运行中小型 ETL 作业的 Python 脚本,并触发 SQL 查询。但是,现在有更现代、更灵活的选项可以解决当前在 PythonShell 上运行的工作负载。本主题介绍如何将您的工作负载从 AWS Glue Python Shell 作业迁移到这些备选选项之一,以便利用现有的新功能。
本主题介绍如何从 AWS Glue Python Shell 作业迁移到备选选项。
将工作负载迁移到 AWS Glue Spark 作业
AWS Glue Spark 和 PySpark 作业允许您以分布式方式运行工作负载。由于 AWS Glue Python Shell 作业和 AWS Glue Spark 作业在同一平台上运行,因此迁移非常容易,您可以继续使用 Python Shell 作业中使用的现有 AWS Glue 功能,例如 AWS Glue 工作流程、AWS Glue 触发器、AWS Glue 的 Amazon EventBridge EventBridge 集成、基于 PIP 的软件包安装等。
但是,AWS Glue Spark 作业专为运行 Spark 工作负载而设计,最少需要 2 个工作线程。如果您在不修改脚本的情况下从 Python Shell 作业迁移,则实际上只会使用一个工作线程,而其他工作线程将保持空闲状态。这将增加您的成本。
为了提高效率,请重写 Python 作业脚本以利用 Spark 的功能并将工作负载分配给多个工作线程。如果您的 Python 脚本基于 Pandas,则在 Spark 上使用 New Pandas API 可以轻松迁移。要了解更多相关信息,请访问AWS 大数据博客:Dive deep into AWS Glue 4.0 for Apache Spark
将工作负载迁移到 AWS Lambda
AWS Lambda 是一项无服务器计算服务,使您无需预置或管理服务器即可运行代码。由于 AWS Lambda 启动时间更短,计算容量选项更灵活,因此您可以从这些优势中受益。为了管理额外的 Python 库,AWS Glue Python Shell 作业使用基于 PIP 的安装。但是,对于 AWS Lambda,您需要选择以下选项之一:zip 存档、容器映像或 Lambda 层。
另一方面,AWS Lambda 的最大超时时间为 900 秒(15 分钟)。如果您现有 AWS Glue Python Shell 作业工作负载的作业持续时间超过该值,或者如果您的工作负载具有可能导致作业持续时间更长的尖峰模式,则建议您探索其他选项,而不是 AWS Lambda。
将工作负载迁移到 Amazon ECS/Fargate
Amazon Elastic Container Service(Amazon ECS)是一项完全托管的服务,可简化容器化应用程序的部署、管理和扩展。AWS Fargate 是一款无服务器计算引擎,适用于在 Amazon ECS 和 Amazon Elastic Kubernetes Service(Amazon EKS)上运行的容器化工作负载。Amazon ECS 和 Fargate 没有最大超时限制,因此对于长时间运行的作业来说,这是一个不错的选择。由于您可以完全控制容器镜像,因此可以将 Python 脚本和额外的 Python 库带入容器并进行使用。但是,要使用这种方法,您需要将 Python 脚本容器化。
将工作负载迁移到 Amazon Managed Workflows for Apache Airflow Python Operator
Amazon Managed Workflows for Apache Airflow(Managed Workflows for Apache Airflow)是一项适用于 Apache Airflow 的托管式编排服务,让您能够更轻松地在云中大规模设置和操作端到端的数据管道。如果您已经拥有 MWAA 环境,则使用 Python 操作员而不是 AWS Glue Python Shell 作业将非常简单。Python 操作员是在 Airflow 工作流程中运行 Python 代码的操作员。但是,如果您没有现有 MWAA 环境,则建议您探索其他选项。
将工作负载迁移到 Amazon SageMaker AI AI 训练作业
Amazon SageMaker AI Training 是 Amazon SageMaker AI 提供的完全托管式机器学习(ML)服务,可帮助您高效地大规模训练各种 ML 模型。Amazon SageMaker AI AI 作业的核心是将 ML 工作负载容器化,并能管理 AWS 计算资源。如果您偏好没有最大超时时间的无服务器环境,则 Amazon SageMaker AI AI 训练作业可能非常适合您。但是,启动延迟往往比 AWS Glue Python Shell 作业长。对于对延迟敏感的作业,建议您探索其他选项。