Azure Databricks Notebook能否清除缓存?列转换后Schema未更新
Azure Databricks Notebook 缓存清除与日期列转换问题解决
核心问题:DataFrame的不可变性
你遇到的问题和缓存无关,本质是Spark DataFrame的不可变性特性:withColumn操作会返回一个全新的DataFrame,不会修改原DataFrame的结构。你看到的Out[167]是新生成DataFrame的信息,但你查看Schema时还是用的原df,所以显示列类型仍为字符串。
正确的日期列转换方式
必须将withColumn返回的新DataFrame赋值给变量(可覆盖原变量,也可使用新变量):
# 覆盖原DataFrame df = df.withColumn('Date', F.to_date('Date', 'yyyyMMdd')) # 或创建新的DataFrame new_df = df.withColumn('Date', F.to_date('Date', 'yyyyMMdd'))
完成赋值后再查看Schema,就能看到Date列已变为date类型。
缓存清除方法(若确实需要)
只有当你之前执行过df.cache()或df.persist()缓存DataFrame时,才需要清除缓存:
- 清除指定DataFrame的缓存:
df.unpersist() - 清除所有缓存的DataFrame:
spark.catalog.clearCache()
内容的提问来源于stack exchange,提问作者moski
相关产品推荐
相关产品推荐

