首页 > 解决方案 > 如何在我们有 null 的日期字段中放置一些默认值,例如“9999-12-31”

问题描述

在此处输入图像描述

test是一个数据框,其中t_dob是一个日期字段,其中包含空值。每当我使用 spark scala 提交的日期为空时,我想硬编码一个像“9999-12-31”这样的值。在日期字段的 na.fill() 方法中找不到任何此类选项。谁能让我知道如何做到这一点。

预期输出如下:-

+-------------+--------+-----+ |s_customer_id| s_name|t_dob| +-------------+--------+-----+ | 101|羞耻| 9999-12-31| | 102| 拉杰什| 9999-12-31| +-------------+--------+------+

标签: scalaapache-spark

解决方案


这是我的方法

val spark = getSession()

    val data = Seq(("101", "Shameer", null),
      ("102", "Rajesh", new Date(new java.util.Date().getTime)))


    import spark.implicits._
    val df = spark.sparkContext.parallelize(data).toDF("s_customer_id", "s_name", "t_dob")

    import org.apache.spark.sql.functions.{lit, when, to_date}
    df.withColumn("t_dob", when($"t_dob".isNull, to_date(lit("9999-12-31"), "yyyy-MM-dd")).otherwise($"t_dob")).show()

输出

+-------------+-------+----------+
|s_customer_id| s_name|     t_dob|
+-------------+-------+----------+
|          101|Shameer|9999-12-31|
|          102| Rajesh|2019-02-21|
+-------------+-------+----------+

推荐阅读