1. to_date
`to_date` 是 Apache Spark 中的一个函数,用于将字符串或其他日期/时间格式转换为日期格式。这个函数通常在处理日期字符串时非常有用,尤其是当你需要将它们转换为标准的日期格式以进行进一步的操作或分析时。
例如,假设你有一个包含日期字符串的 DataFrame,并且这些字符串的格式为 "yyyy-MM-dd",你可以使用 `to_date` 函数将这些字符串转换为日期格式:
Scala
import org.apache.spark.sql.functions._
val df = Seq("2022-01-01", "2022-01-02").toDF("date_string")
val dfWithDate = df.withColumn("date", to_date(col("date_string"), "yyyy-MM-dd"))
dfWithDate.show()
输出:
+-----------+--------------+
|date_string| date |
+-----------+--------------+
| 2022-01-01|2022-01-01|
| 2022-01-02|2022-01-02|
+-----------+------------------+
2.datediff
`datediff` 函数是 Spark SQL 中的一个日期函数,用于计算两个日期之间的天数差异。它接受两个日期作为输入,并返回两个日期之间的天数差。
函数原型如下:
Scala
datediff(enddate: Column, startdate: Column): Column
其中,`enddate` 和 `startdate` 是两个日期列或者日期值。
下面是一个示例:
Scala
import org.apache.spark.sql.functions.datediff
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder()
.appName("datediff example")
.getOrCreate()
import spark.implicits._
val df = Seq(("2021-01-01", "2021-01-10"), ("2021-02-01", "2021-02-10")).toDF("startdate", "enddate")
df.withColumn("diff", datediff($"enddate", $"startdate"))
.show()
输出结果为:
+----------+----------+----+
| startdate| enddate|diff|
+----------+----------+----+
|2021-01-01|2021-01-10| 9|
|2021-02-01|2021-02-10| 9|
+----------+----------+----+
可以看到,`datediff` 函数计算了 `startdate` 到 `enddate` 之间的天数差异,并将结果添加到了新的一列 `diff` 中。