

# 从 AWS Glue Python Shell 作业迁移
<a name="pyshell-migration"></a>

 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 作业
<a name="pyshell-migration-to-glue-spark-jobs"></a>

 [AWS Glue Spark 和 PySpark 作业](https://docs.aws.amazon.com/glue/latest/dg/spark_and_pyspark.html)允许您以分布式方式运行工作负载。由于 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](https://aws.amazon.com/blogs/big-data/dive-deep-into-aws-glue-4-0-for-apache-spark/)。

## 将工作负载迁移到 AWS Lambda
<a name="pyshell-migration-to-aws-lambda"></a>

 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
<a name="pyshell-migration-to-ecs-aws-fargate"></a>

 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
<a name="pyshell-migration-to-amazon-mwaa-python-operator"></a>

 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 训练作业
<a name="pyshell-migration-to-amazon-sagemaker-ai"></a>

 Amazon SageMaker AI Training 是 Amazon SageMaker AI 提供的完全托管式机器学习（ML）服务，可帮助您高效地大规模训练各种 ML 模型。Amazon SageMaker AI AI 作业的核心是将 ML 工作负载容器化，并能管理 AWS 计算资源。如果您偏好没有最大超时时间的无服务器环境，则 Amazon SageMaker AI AI 训练作业可能非常适合您。但是，启动延迟往往比 AWS Glue Python Shell 作业长。对于对延迟敏感的作业，建议您探索其他选项。