我在工作中继承了一个 spark 项目,该项目使用 to_date 函数将字符串列转换为日期列,有时带有明确的日期模式(即 to_date(dateCol, \'yyyy-MM-dd\'))和
我在工作中继承了一个 spark 项目,该项目使用 to_date
函数将字符串列转换为日期列,有时使用明确的日期模式(即 to_date(dateCol, "yyyy-MM-dd")
),有时则没有(即 to_date(dateCol)
)。
为了更好地理解代码并通过演变来维护它,我想知道:
在没有明确模式参数的情况下,to_date 方法可以识别哪些模式?
注意:我找到了 一份文档(针对 pyspark:\), 其中指出
By default, it follows casting rules to pyspark.sql.types.DateType if the format is omitted.
Equivalent to col.cast("date").
但我不知道这些规则是什么。
经过一番搜索,我发现这个 迁移文档 指出
Since Spark 3.3, when the date or timestamp pattern is not specified, Spark
converts an input string to a date/timestamp using the CAST expression approach.
The changes affect CSV/JSON datasources and parsing of partition values.
In Spark 3.2 or earlier, when the date or timestamp pattern is not set, Spark uses
the default patterns: yyyy-MM-dd for dates and yyyy-MM-dd HH:mm:ss for timestamps.
After the changes, Spark still recognizes the pattern together with
Date patterns:
[+-]yyyy*
[+-]yyyy*-[m]m
[+-]yyyy*-[m]m-[d]d
[+-]yyyy*-[m]m-[d]d
[+-]yyyy*-[m]m-[d]d *
[+-]yyyy*-[m]m-[d]dT*
所以,如果我理解正确的话:
yyyy-MM-dd
。