You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求助:使用PySpark与AWS Glue从S3读取Parquet并写入CSV

AWS Glue 读取S3 Parquet文件并导出为CSV的修正实现

你的代码存在几处语法错误和逻辑遗漏,以下是修正后的完整代码,同时补充了实用配置:

from pyspark.context import SparkContext
from awsglue.context import GlueContext

# 初始化上下文
sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

# 读取S3中的Parquet文件
dynamicFrame = glueContext.create_dynamic_frame.from_options(
    connection_type="s3",
    connection_options={"paths": ["s3://path/abc.parquet/"]},  # 修正为列表格式,括号匹配
    format="parquet"
)

# 将数据写入S3为CSV文件
glueContext.write_dynamic_frame.from_options(
    frame=dynamicFrame,  # 必须指定要写入的DynamicFrame对象
    connection_type="s3",
    connection_options={"paths": ["s3://path/abc/"]},  # 修正路径格式,确保输出目录正确
    format="csv",
    format_options={
        "separator": ",",
        "header": "true"  # 添加表头,提升CSV文件可读性
    }
)

关键修正点说明:

  • 变量名修正:dynamicFramne拼写错误改为dynamicFrame
  • 路径格式修正:connection_options里的paths必须是列表类型(用[]包裹),原代码错误使用了字典符号{}且括号不匹配
  • 写入对象指定:write_dynamic_frame.from_options必须通过frame参数传入要导出的DynamicFrame,原代码遗漏了这个核心参数
  • CSV配置优化:添加"header": "true"让CSV文件包含列名,这是数据分析场景的常用需求
  • 语法细节:移除了format_options中多余的末尾逗号,避免语法解析报错

额外注意事项:

  • 确保AWS Glue作业的IAM角色拥有目标S3存储桶的读写权限
  • 输出路径s3://path/abc/会自动生成多个分区CSV文件(Spark分布式特性),若需单个文件,可将DynamicFrame转为DataFrame后用coalesce(1)合并再写入,但大文件不推荐此操作
  • 若Parquet文件有分区结构,可在connection_options中添加"recurse": True确保读取所有子目录下的文件

内容的提问来源于stack exchange,提问作者Murshed Syed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 18:55:17