在Palantir Foundry代码工作簿Spark SQL节点中(或在SQL模式下的Spark控制台中(,这是有效的:
SELECT date_format('2021-01-01',"yyyy-MM")
2021-01
但执行一个要求四分之一的模式并没有:
SELECT date_format('2021-01-01',"yyyy-Q")
java.lang.IllegalArgumentException: Illegal pattern character 'Q'
这是spark 3.2.0 中的合法模式
https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html
日期时间模式-Spark 3.2.0文档
是否有一些环境配置更改了这种行为?有一个开关集spark.sql.legate.timeParserPolicy=legacy可能与此有关。如果这是罪魁祸首-如何在工作簿环境中更改它?
您发现了一个错误!
当我运行这个时,在堆栈跟踪中,我得到:
Caused by: java.lang.IllegalArgumentException: Illegal pattern character 'Q'
at java.base/java.text.SimpleDateFormat.compile(SimpleDateFormat.java:845)
at java.base/java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:653)
at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:624)
at org.apache.spark.sql.catalyst.util.LegacySimpleTimestampFormatter.sdf$lzycompute(TimestampFormatter.scala:229)
...
在SimpleDateFormat.java规范中,不允许使用Quarter。
Spark告诉您,它允许使用底层Java实现所不允许的格式字符串。我建议在Apache Spark Jira 上提交一个错误