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

如何让AWS Glue Crawler正确解析JSON中的自定义日期格式?

让AWS Glue Crawler正确解析JSON日期格式的方法

方法1:自定义JSON分类器

AWS Glue默认分类器对部分非通用日期格式识别有限,你可以创建自定义分类器指定解析规则:

  • 进入Glue控制台的分类器页面,新建JSON分类器
  • 在配置中,通过jsonPath定位目标字段,同时配置SerDe参数datetime.formats,填入所有需要识别的日期格式,用逗号分隔:
    yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z',yyyy-MM-dd HH:mm:ss.S,yyyy-MM-dd
    
  • 将这个自定义分类器设置为Crawler的优先使用分类器,替换默认规则

方法2:修改Crawler的高级SerDe参数

编辑已有的Crawler,在配置输出步骤展开高级选项:

  • 找到设置SerDe参数,添加键datetime.formats,值填上述三种日期格式的组合
  • 保存配置后重新运行Crawler,它会按照指定格式将对应字符串解析为datetime或date类型

方法3:用Glue ETL事后转换类型

如果Crawler已经生成了字符串类型的表,可以通过ETL Job修正:
编写PySpark脚本转换字段类型,示例如下:

from pyspark.sql.functions import to_timestamp, to_date, col

# 读取原表数据
df = spark.read.table("your_db.your_raw_table")

# 逐一转换日期字段
df = df.withColumn(
    "isoDateTime", 
    to_timestamp(col("Header.isoDateTime"), "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'")
)
df = df.withColumn(
    "dateTime", 
    to_timestamp(col("Data.dateTime"), "yyyy-MM-dd HH:mm:ss.S")
)
df = df.withColumn(
    "dateOnly", 
    to_date(col("Data.dateOnly"), "yyyy-MM-dd")
)

# 写入转换后的表
df.write.mode("overwrite").saveAsTable("your_db.your_transformed_table")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:10:28