Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从spark sql join中选择顶行

如何从spark sql join中选择顶行
EN

Stack Overflow用户
提问于 2019-07-02 10:07:49
回答 2查看 324关注 0票数 2

我有两个这样的数据帧。df1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+----+-------------+
|colA|colB         |
+----+-------------+
|   1|   "someval" | 
|   2|   "someval2"|  
|   3|   "someval3"|

df2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+----+-------------+
|colA|colC         |
+----+-------------+
|   1|   "someval" | 
|   1|   "someval2"|  
|   2|   "someval3"|

如果我内连接df1和df2 (通过colA),我会得到这样的结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+----+-------------+----------+
|colA|colB         |colC      |
+----+-------------+----------+
|   1|   "someval" |"someval" |
|   1|   "someval" |"someval2"| 
|   2|   "someval2"|"someval3"|

但是我只需要colA的不同行(因此,获取colA的顶行就足够了)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+----+-------------+----------+
|colA|colB         |colC      |
+----+-------------+----------+
|   1|   "someval" |"someval" |
|   2|   "someval2"|"someval3"|
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-02 14:17:00

尝尝这个。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
distinct_df = df2.dropDuplicates(['colA']) 

加入你的数据帧

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
inner_join_df = df1.join(distinct_df, df1.colA == distinct_df.colA)
inner_join_df.show()

我已经使用pandas加入了数据帧:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
data1 =[[1,'someval'],[2,'someval2'],[3,'someval3']]
data2 =[[1,'someval'],[1,'someval2'],[2,'someval3']]

df1=pd.DataFrame(data1,columns=['colA','colB'])
df2=pd.DataFrame(data2,columns=['colA','colC'])

unique_df=df2.drop_duplicates('colA')

joindf = pd.merge(df1,unique_df,on='colA',how='inner')
print(joindf )
票数 1
EN

Stack Overflow用户

发布于 2019-07-02 12:17:04

使用窗口函数对具有相同列A值的行进行排序,因为您喜欢使用其他列.In第二步仅筛选具有函数result 1的行

sqlContext.sql(""" select colA,colB,colC from ( SELECT *,row_number() over (PARTITION by colA order by colB,colC) as rn from df_p )x where rn=1 """ ).show(60)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56850042

复制
相关文章
Spark SQL如何选择join策略
众所周知,Catalyst Optimizer是Spark SQL的核心,它主要负责将SQL语句转换成最终的物理执行计划,在一定程度上决定了SQL执行的性能。
大数据学习与分享
2020/08/10
1.2K0
Spark SQL是如何选择join策略的?
我们都知道,Spark SQL上主要有三种实现join的策略,分别是Broadcast hash join、Shuffle hash join、Sort merge join。那Catalyst是依据什么样的规则来选择join策略的?本文来简单补个漏。
王知无-import_bigdata
2020/05/07
2.8K0
Spark SQL JOIN
本文主要介绍 Spark SQL 的多表连接,需要预先准备测试数据。分别创建员工和部门的 Datafame,并注册为临时视图,代码如下:
每天进步一点点
2022/07/27
7900
Spark SQL JOIN
Spark SQL 之 Join 实现
本文介绍了Spark SQL的Join实现原理、不同Join方式的实现流程、优化策略以及社区现状,为Spark SQL的Join实现提供了全面且深入的解析,有助于开发者深入了解Spark SQL的Join实现细节,从而更好地利用Spark SQL进行数据处理和分析。
涂小刚
2017/07/19
9.5K5
Spark SQL 之 Join 实现
Spark join种类(>3种)及join选择依据
join是作为业务开发绕不开的SQL话题,无论是传统的数据库join,还是大数据里的join。
Spark学习技巧
2021/03/05
1K0
Spark join种类(>3种)及join选择依据
Spark中SQL列和并为一行
但是在 spark 中没有 GROUP_CONCAT 命令,查找后发现命令 concat_ws :
机器学习和大数据挖掘
2019/07/02
1.7K0
sql中left join、right join、inner join区别
aID aNum 1     a0111 2     a0112 3     a0113 4     a0114 5     a0115
csxiaoyao
2019/02/18
1.8K0
Spark SQL | Spark,从入门到精通
欢迎阅读美图数据技术团队的「Spark,从入门到精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你。
美图数据技术团队
2019/04/19
2K0
Spark SQL | Spark,从入门到精通
【疑惑】如何从 Spark 的 DataFrame 中取出具体某一行?
根据阿里专家Spark的DataFrame不是真正的DataFrame-秦续业的文章-知乎[1]的文章:
Piper蛋窝
2021/07/23
4.1K0
SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别
  今天主要的内容是要讲解SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别和用法,不用我说其实前面的这些基本SQL语法各位攻城狮基本上都用过。但是往往我们可能用的比较多的也就是左右连接和内连接了,而且对于许多初学者而言不知道什么时候该用哪种语法进行查询,并且对于左右,或者内连接查询的时候关于ON 和Where 的作用也是模糊不清的,说不出其中的一个大概的差别,因此接下来请容我把它们好好描述一遍。
追逐时光者
2019/08/28
9.4K1
SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别
spark 多表 join
1.Broadcast Hash Join(小表广播,小表Join大表)(分布式改造)
用户6404053
2019/11/03
3.3K0
spark 多表 join
SQL JOIN
在机房收费系统个人重构的时候,很多的功能都需要根据数据库中的一个表中的信息,去查询另一个表中相匹配的信息,我们用到了视图,但是你有没有注意到下面的SQL语句呢?(SELECT...FROM...JOIN...ON...),接下来我们就一起来了解SQL中的JOIN.
令仔很忙
2018/09/14
7920
SQL JOIN
Flink SQL中的Join操作
Flink SQL 支持对动态表进行复杂灵活的连接操作。 有几种不同类型的连接来解决可能需要的各种语义查询。
从大数据到人工智能
2022/02/24
5.3K0
Spark SQL从入门到精通
熟悉spark sql的都知道,spark sql是从shark发展而来。Shark为了实现Hive兼容,在HQL方面重用了Hive中HQL的解析、逻辑执行计划翻译、执行计划优化等逻辑,可以近似认为仅将物理执行计划从MR作业替换成了Spark作业(辅以内存列式存储等各种和Hive关系不大的优化);
Spark学习技巧
2019/05/09
1.1K0
Spark SQL从入门到精通
《从0到1学习Spark》-- 初识Spark SQL
今天小强给大家介绍Spark SQL,小强的平时的开发中会经常使用Spark SQL进行数据分析查询操作,Spark SQL是整个Spark生态系统中最常用的组件。这也是为什么很多大公司使用Spark SQL作为大数据分析的关键组件之一。
程序员小强
2019/09/20
7810
《从0到1学习Spark》-- 初识Spark SQL
SQL中 inner join、left join、right join、full join 到底怎么选?详解来了
作为一名CURD工程师,联表查询应该就算是一项相对复杂的工作了吧,如果表结构复杂一点,左一连,右一连,内一连再加上外一连,很可能就被绕晕的,最终得到的数据集就不是自己理想中的结果;
一行Java
2022/04/07
1K0
SQL中 inner join、left join、right join、full join 到底怎么选?详解来了
Spark SQL中Not in Subquery为何低效以及如何规避
通过上述逻辑计划和物理计划可以看出,Spark SQL在对not in subquery处理,从逻辑计划转换为物理计划时,会最终选择BroadcastNestedLoopJoin(对应到Spark源码中BroadcastNestedLoopJoinExec.scala)策略。
大数据学习与分享
2020/08/10
2.3K0
sql join中on条件后接and和where
场景1:left join + on a.xx = b.xx and a.xx2 = 'aa'
不吃西红柿
2022/07/29
1.8K0
sql join中on条件后接and和where
Spark Join 源码剖析①
在 Spark SQL 中,参与 Join 操作的两张表分别被称为流式表(StreamTable)和构件表(BuildTable),不同表的角色在 Spark SQL 中会通过一定的策略进行设定。通常来讲,系统会将大表设置为 StreamTable,小表设置为 BuildTable。流式表的迭代器为 streamIter,构建表的迭代器为 buildIter。遍历 streamIter 的每一条记录,然后在 buildIter 中查找匹配的记录。这个查找过程称为 build 过程。每次 build 操作的结果为一条 JoinedRow(A, B),其中 A 来自 streamedIter,B 来自 buildIter。
codingforfun
2022/05/23
8440
Spark Join 源码剖析①
sql 中 join 的复杂示例解读
inner join(等值连接) 只返回两个表中联结字段相等的行 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 on 指定表间联结字段及其关系的等号 "=" 表达式, 返回 true 或 false. 当表达式返回 true 时, 则查询中包含该记录. update (ctarticle as a left join ctclass as c on a.classid =
java达人
2018/01/31
1.5K0

相似问题

如何从group by with join中选择顶行

20

SQL排序--选择顶行中的顶行

15

选择SQL Join中第二个表的顶行

20

SQL选择顶n%行

10

sql join -仅从第二个表中选择顶行

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文