Spark中na.fill无法为DateType字段填充日期值的问题排查
Spark中na.fill对DateType字段无效的原因
- 核心问题是类型不匹配:Spark的
na.fill方法在使用字典参数填充时,要求填充值的类型必须和目标列的Spark数据类型严格对应。你用date.now()生成的是Python的datetime.datetime对象,而Spark DateType列对应的Python类型是datetime.date对象,两者类型不匹配,导致Spark直接忽略了这个字段的填充操作,不会抛出错误。 - 其他类型字段生效的原因:像DoubleType这类数值型字段,Python的int/float可以被Spark自动隐式转换为对应的Spark类型,所以填充操作能正常执行。
- 解决办法:把填充值转换成
date类型即可,比如用date.today(),或者对date.now()取date()部分:from datetime import date df.na.fill({"customer_from": date.today()}) # 或者 df.na.fill({"customer_from": date.now().date()})
内容的提问来源于stack exchange,提问作者awesome_sangram
相关产品推荐
相关产品推荐

