如何在AWS Glue Python Shell Job中运行PySpark Job以降低成本
在AWS Glue Python Shell Job中运行PySpark以处理小型数据集的可行方案
可行,以下是几种适配小型数据集的实践方案,能帮你借助Glue Python Shell的低配置特性降低成本:
1. 手动打包PySpark依赖并加载到作业
Glue Python Shell默认不预装PySpark环境,你可以自行打包适配版本的PySpark核心依赖(包括pyspark、py4j等)成.zip或.egg包,上传到S3存储桶。然后在Glue作业配置的Python路径中指定该S3包的路径,让作业加载依赖。
核心代码示例
初始化SparkSession时使用本地模式(利用作业分配的本地资源处理数据,无需集群):
from pyspark.sql import SparkSession # 用local[*]模式最大化利用作业分配的CPU线程 spark = SparkSession.builder.master("local[*]") \ .appName("SmallDatasetSparkJob") \ .getOrCreate() # 读取小型数据集 df = spark.read.csv("s3://your-bucket/small-data.csv", header=True) # 数据处理逻辑示例 df_filtered = df.filter(df["value"] > 10) # 输出结果到S3 df_filtered.write.parquet("s3://your-bucket/output/") spark.stop()
2. 配置最小化资源规格
Glue Python Shell支持低至0.0625个DPU的资源配置(远低于标准Glue Spark Job的最小2个DPU),你可以在作业配置里选择最小资源档位,配合本地模式的PySpark,刚好满足小型数据集的处理需求,大幅压缩计费成本。
3. 关键注意事项
- 仅适合几GB以内的小型数据集:本地模式Spark无分布式集群能力,数据量过大时会出现内存不足或处理超时问题。
- 版本兼容性:打包PySpark依赖时,要匹配Glue Python Shell的Python版本(如3.7、3.9),避免版本不兼容引发运行错误。
- 日志排查:作业失败时优先查看CloudWatch日志,检查依赖加载状态、Spark初始化是否异常。
内容的提问来源于stack exchange,提问作者Amit Nahar
相关产品推荐
相关产品推荐

