12-31”,其中包含空值

8iwquhpp  于 2021-07-14  发布在  Java
关注(0)|答案(7)|浏览(343)

这个问题在这里已经有答案了

如何在java中使用spark将空值替换为Dataframe中的特定值(4个答案)
两年前关门了。

test是一个Dataframe,其中有一个日期字段,其中包含空值。每当我在使用sparkscala的日期文件中有空值时,我想硬编码一个像“9999-12-31”这样的值。在日期字段的na.fill()方法中找不到任何此类选项。有人能告诉我怎么做吗。
预期产量如下:-
+

s2j5cfk0

s2j5cfk01#

---+-------+-----+| s|U客户|U身份证| s|U姓名| t|U dob |+

nhhxz33t

nhhxz33t4#

101 | shameer | 9999-12-31 | 102 | rajesh | 9999-12-31 |+

k10s72fa

k10s72fa6#

试试这个:var newtest=test.withcolumn(“t\u dob\u chnaged”,when(col(“t\u dob”).isin(null),“9999-12-31”))

9jyewag0

9jyewag07#

这是我的方法

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|
+-------------+-------+----------+

相关问题