无法在SparkSQL中选择每个组的前10条记录

编程入门 行业动态 更新时间:2024-10-10 03:25:59
本文介绍了无法在SparkSQL中选择每个组的前10条记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我是Spark SQL的新手.我有一个这样的数据框.

Hi I am new to spark sql. I have a data frame like this.

---+----------+----+----+----+------------------------+ |tag id|timestamp|listner| orgid |org2id|RSSI +---+----------+----+----+----+------------------------+ | 4|1496745912| 362| 4| 3| 0.60| | 4|1496745924|1901| 4| 3| 0.60| | 4|1496746030|1901| 4| 3| 0.60| | 4|1496746110| 718| 4| 3| 0.30| | 2|1496746128| 718| 4| 3| 0.60| | 2|1496746188|1901| 4| 3| 0.10|

我想为每个列表器选择Spark sql中的前10个时间戳值.

I want to select for each listner top 10 timestamp values in spark sql.

我尝试了以下查询.它引发错误.

I tried the following query.It throws errors.

val avg = sqlContext.sql("select top 10 * from avg_table") // throws error. val avg = sqlContext.sql("select rssi,timestamp,tagid from avg_table order by desc limit 10") // it prints only 10 records.

我想为每个列表器选择我需要采用的前10个时间戳值.任何帮助将不胜感激.

I want to select for each listner I need to take top 10 timestamp values. Any help will be appreciated.

推荐答案

这行不通吗?

select rssi, timestamp, tagid from avg_table order by timestamp desc limit 10;

哦,明白了.您要row_number():

select rssi, timestamp, tagid from (select a.*, row_number() over (partition by listner order by timestamp desc) as seqnum from avg_table ) a where seqnum <= 10 order by a.timestamp desc;

更多推荐

无法在SparkSQL中选择每个组的前10条记录

本文发布于:2023-10-26 17:58:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1530913.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:SparkSQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!