【发布时间】:2017-07-28 19:20:13
【问题描述】:
我正在尝试对 spark-shell 中的某个数据帧执行一个简单的 SQL 查询,该查询将 1 周的间隔添加到某个日期,如下所示:
原始查询:
scala> spark.sql("select Cast(table1.date2 as Date) + interval 1 week from table1").show()
现在我做了一些测试:
scala> spark.sql("select Cast('1999-09-19' as Date) + interval 1 week from table1").show()
我得到了正确的结果
+----------------------------------------------------------------------------+
|CAST(CAST(CAST(1999-09-19 AS DATE) AS TIMESTAMP) + interval 1 weeks AS DATE)|
+----------------------------------------------------------------------------+
| 1999-09-26|
+----------------------------------------------------------------------------+
(只需将 7 天添加到 19 = 26)
但是当我将年份改为 1997 年而不是 1999 年时,结果发生了变化!
scala> spark.sql("select Cast('1997-09-19' as Date) + interval 1 week from table1").show()
+----------------------------------------------------------------------------+
|CAST(CAST(CAST(1997-09-19 AS DATE) AS TIMESTAMP) + interval 1 weeks AS DATE)|
+----------------------------------------------------------------------------+
| 1997-09-25|
+----------------------------------------------------------------------------+
为什么结果会改变?不应该是 26 而不是 25?
那么,这是 sparkSQL 中与某种迭代计算丢失相关的错误,还是我遗漏了什么?
【问题讨论】:
标签: sql apache-spark apache-spark-sql