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

不使用Crawler能否在AWS Glue中直接读取固定长度文件

结论

AWS Glue 目前没有原生的固定宽度文件解析支持,无法直接通过 DynamicFrameReader.from_options 方法直接读取固定长度文件,需要结合 Spark 底层解析能力实现,无需调用 Crawler。

具体实现步骤

  • 第一步:通过 from_options 把目标固定宽度文件读取为纯文本格式的 DynamicFrame
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)

# 读取S3上的固定宽度文件为纯文本
raw_dyf = glueContext.create_dynamic_frame.from_options(
    connection_type = "s3",
    connection_options = {
        "paths": ["s3://<你的存储桶路径>/<固定宽度文件所在目录>/"]
    },
    format = "text",
    transformation_ctx = "raw_fixed_width_file"
)
  • 第二步:将 DynamicFrame 转为 Spark DataFrame,按字段宽度规则截取对应字段
    示例假设你的文件包含3个字段,宽度分别为10、20、15:
from pyspark.sql.functions import substring

raw_text_df = raw_dyf.toDF()
parsed_df = raw_text_df.select(
    substring(raw_text_df.value, 1, 10).alias("字段1"),
    substring(raw_text_df.value, 11, 20).alias("字段2"),
    substring(raw_text_df.value, 31, 15).alias("字段3")
)

如果字段数量较多,可以预先定义字段名和宽度的映射列表,批量生成截取逻辑,无需手动逐行编写字段规则。

  • 第三步(可选):如果后续需要使用 Glue DynamicFrame 的相关能力处理数据,可将解析完成的 Spark DataFrame 转回 DynamicFrame:
parsed_dyf = glueContext.create_dynamic_frame_from_rdd(parsed_df.rdd, "parsed_fixed_width_data")

内容的提问来源于stack exchange,提问作者Aji C S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:57:00