spark sql数据如何求交集?

工作中想求一行数组是否在很多个数字中,这时候想到了数据交集,但是搜了很多资料也没找到,求解惑
实现两个数组交集,或者这一组数组有没有数据在另外一组数组里

spark sql中可以使用except来获得两组数据的交集

SELECT * FROM student_1 
EXCEPT 
SELECT * FROM student_2;

你如果是某一行中的某一列是个数组,把它展开成多行后再用上面这个方法一样可以得出交集,即explode +except +collect_list

当然,也可以直接用数组函数得到交集

img


参考
Spark SQL 数组(Array)处理函数及应用 - 杭州观远数据有限公司 http://help.guandata.com/hc/kb/article/1522345/

这个和spark sql没关系呀,主要就是后端操作,spark sql只负责取出和存储,以Java语言基础为例,先将数组array转变成list集合,可以使用Arrays.asList(array)获得集合listA,同理另一个就是listB,取出交集利用retainAll方法代码如下

listA.retainAll(listB);
System.out.println(listA);

当然python作为基础或者scala也都有各自的方法

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632