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

AWS Glue中使用Data Frame将字符串列转换为日期格式问题求助

AWS Glue Spark DataFrame 字符串转日期类型正确实现方案

原代码错误原因

  • 第一种写法错误:datetime.strptime是Python原生方法,仅支持处理单个字符串变量,无法直接作用于Spark DataFrame的整列数据,Spark无法将该方法分发到集群执行节点运行,会直接抛出异常。
  • 第二种写法错误:withColumn方法的第一个参数要求为字符串格式的目标列名,传入col('date_str')属于语法错误,不符合Spark API参数规范。
  • 第三种写法错误:未提前导入to_timestamp函数就直接调用,会抛出名称未定义的报错,补全导入后该写法本身逻辑是可用的。

正确实现代码

from pyspark.sql.functions import from_unixtime, unix_timestamp, col, substring, to_timestamp, to_date
from datetime import datetime

# Dynamic Frame转Data Frame
df = Transform0.toDF()

# 对time列截取子串
# 转换前示例:"Thu Sep 03 2020 01:43:52 GMT+0000 (Coordinated Universal Time)"
df = df.withColumn('date_str', substring(df['time'],5,20))
# 转换后示例:"Sep 03 2020 01:43:52"

# 转换为timestamp类型
df = df.withColumn('date_str', to_timestamp(col('date_str'), 'MMM dd yyyy HH:mm:ss'))

# 若仅需要日期(不含时间),可使用to_date方法
# df = df.withColumn('date_str', to_date(col('date_str'), 'MMM dd yyyy HH:mm:ss'))

# 验证转换结果
df.select('time', 'date_str').show(truncate=False)

可选兼容配置

如果运行环境locale不为英文,导致月份英文缩写识别失败,可以在作业初始化阶段添加Spark配置:

spark.conf.set("spark.sql.locale", "en_US")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:48:04