【发布时间】:2019-06-30 16:38:22
【问题描述】:
我在 scala spark 中使用了一个简单的 groupby 查询,其目标是在已排序的数据框中获取组中的第一个值。这是我的火花数据框
+---------------+------------------------------------------+
|ID |some_flag |some_type | Timestamp |
+---------------+------------------------------------------+
| 656565654| true| Type 1|2018-08-10 00:00:00|
| 656565654| false| Type 1|2017-08-02 00:00:00|
| 656565654| false| Type 2|2016-07-30 00:00:00|
| 656565654| false| Type 2|2016-05-04 00:00:00|
| 656565654| false| Type 2|2016-04-29 00:00:00|
| 656565654| false| Type 2|2015-10-29 00:00:00|
| 656565654| false| Type 2|2015-04-29 00:00:00|
+---------------+----------+-----------+-------------------+
这是我的汇总查询
val sampleDF = df.sort($"Timestamp".desc).groupBy("ID").agg(first("Timestamp"), first("some_flag"), first("some_type"))
预期的结果是
+---------------+-------------+---------+-------------------+
|ID |some_falg |some_type| Timestamp |
+---------------+-------------+---------+-------------------+
| 656565654| true| Type 1|2018-08-10 00:00:00|
+---------------+-------------+---------+-------------------+
但是得到以下奇怪的输出并且它像随机行一样不断变化
+---------------+-------------+---------+-------------------+
|ID |some_falg |some_type| Timestamp |
+---------------+-------------+---------+-------------------+
| 656565654| false| Type 2|2015-10-29 00:00:00|
+---------------+-------------+---------+-------------------+
另外请注意,数据框中没有空值。我在做错事时挠头。需要帮助!
【问题讨论】:
-
timestamp的数据类型是什么? -
timestamp 是时间戳的数据类型
标签: scala apache-spark apache-spark-sql