【发布时间】:2021-03-17 13:53:04
【问题描述】:
这些是我的日期框的值:
+-------+----------+
| ID| Date_Desc|
+-------+----------+
|8951354|2012-12-31|
|8951141|2012-12-31|
|8952745|2012-12-31|
|8952223|2012-12-31|
|8951608|2012-12-31|
|8950793|2012-12-31|
|8950760|2012-12-31|
|8951611|2012-12-31|
|8951802|2012-12-31|
|8950706|2012-12-31|
|8951585|2012-12-31|
|8951230|2012-12-31|
|8955530|2012-12-31|
|8950570|2012-12-31|
|8954231|2012-12-31|
|8950703|2012-12-31|
|8954418|2012-12-31|
|8951685|2012-12-31|
|8950586|2012-12-31|
|8951367|2012-12-31|
+-------+----------+
我尝试在 pyspark 中创建日期列的中值:
df1 = df1.groupby('Date_Desc').agg(f.expr('percentile(ID, array(0.25))')[0].alias('%25'),
f.expr('percentile(ID, array(0.50))')[0].alias('%50'),
f.expr('percentile(ID, array(0.75))')[0].alias('%75'))
但我得到了一个错误:
Py4JJavaError:调用 o198.showString 时出错。 : org.apache.spark.SparkException:作业因阶段失败而中止: 阶段 29.0 中的任务 1 失败 1 次,最近一次失败:丢失任务 1.0 in stage 29.0 (TID 427, 5bddc801333f, executor driver): org.apache.spark.SparkUpgradeException: You may get a different result 由于 Spark 3.0 的升级: Fail to parse '11/23/04 9:00' in 新的解析器。您可以将 spark.sql.legacy.timeParserPolicy 设置为 LEGACY 恢复 Spark 3.0 之前的行为,或设置为 CORRECTED 并将其视为无效的日期时间字符串。
【问题讨论】:
-
这能回答你的问题吗? to_date fails to parse date in Spark 3.0
-
使用提供的示例数据和代码sn-p无法重现错误。它可能来自此转换之前的某些日期解析。您可以参考链接的问题。
-
非常感谢,按照上面链接中的步骤,我可以成功更改数据列。
标签: apache-spark pyspark apache-spark-sql median