为什么Spark无法识别DD-MM-yyyy HH:mm格式的时间戳?
问题根因
格式符使用错误
Spark的日期时间解析遵循Java SimpleDateFormat规范,你用错了日期占位符:
- 大写
DD对应一年中的第几天,取值范围为1~366 - 小写
dd才对应一个月中的第几天,取值范围为1~31
你输入的时间字符串中27是4月的第27天,用DD解析时会被识别为2021年的第27天(即1月27日),和后续的月份04逻辑冲突,因此解析失败返回null。
修正方案
将格式字符串中的DD替换为dd即可,修改后代码如下:
df = spark.createDataFrame([('27-04-2021 14:11',)], ['t']) df = df.select(to_timestamp(df.t, 'dd-MM-yyyy HH:mm').alias('dt')) display(df)
运行后将得到正确的解析结果:2021-04-27 14:11:00。
内容的提问来源于stack exchange,提问作者MetallicPriest
相关产品推荐
相关产品推荐

