如何在 Spark (Scala) 中获取带前导零的整数值

Sta*_*ark 2 scala apache-spark apache-spark-sql

我有 Spark 数据框,并尝试向其中添加年、月和日列。但问题是添加 YTD 列后,它不会保留日期和月份列的前导零。

val cityDF= Seq(("Delhi","India"),("Kolkata","India"),("Mumbai","India"),("Nairobi","Kenya"),("Colombo","Srilanka"),("Tibet","China")).toDF("City","Country")
val dateString = "2020-01-01"
val dateCol = org.apache.spark.sql.functions.to_date(lit(dateString))
val finaldf = cityDF.select($"*", year(dateCol).alias("Year"), month(dateCol).alias("Month"), dayofmonth(dateCol).alias("Day"))
Run Code Online (Sandbox Code Playgroud)

输出截图

我想保留“月”和“日”列中的前导零,但它给我的结果为 1 而不是 01。
因为我使用年月日期列来创建 Spark 分区。所以我想保持前导零完整。所以我的问题是:如何在数据框列中保留前导零。

pas*_*701 5

整数类型可以使用“format_string”函数转换为字符串类型,其中前导零是可能的:

val finaldf =
  cityDF
    .select($"*",
      year(dateCol).alias("Year"),
      format_string("%02d", month(dateCol)).alias("Month"),
      format_string("%02d", dayofmonth(dateCol)).alias("Day")
    )
Run Code Online (Sandbox Code Playgroud)