这个问题在这里已经有答案了:
如何在java中使用spark将空值替换为Dataframe中的特定值(4个答案)两年前关门了。test是一个Dataframe,其中有一个日期字段,其中包含空值。每当我在使用sparkscala的日期文件中有空值时,我想硬编码一个像“9999-12-31”这样的值。在日期字段的na.fill()方法中找不到任何此类选项。有人能告诉我怎么做吗。预期产量如下:-+
s2j5cfk01#
---+-------+-----+| s|U客户|U身份证| s|U姓名| t|U dob |+
b09cbbtk2#
------+
46scxncf3#
nhhxz33t4#
101 | shameer | 9999-12-31 | 102 | rajesh | 9999-12-31 |+
gwo2fgha5#
---+-------+-----+
k10s72fa6#
试试这个:var newtest=test.withcolumn(“t\u dob\u chnaged”,when(col(“t\u dob”).isin(null),“9999-12-31”))
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| +-------------+-------+----------+
7条答案
按热度按时间s2j5cfk01#
---+-------+-----+| s|U客户|U身份证| s|U姓名| t|U dob |+
b09cbbtk2#
------+
46scxncf3#
------+
nhhxz33t4#
101 | shameer | 9999-12-31 | 102 | rajesh | 9999-12-31 |+
gwo2fgha5#
---+-------+-----+
k10s72fa6#
试试这个:var newtest=test.withcolumn(“t\u dob\u chnaged”,when(col(“t\u dob”).isin(null),“9999-12-31”))
9jyewag07#
这是我的方法
输出