首页 > 其他 > 详细

关于spark中DatatFrame函数操作中isin方法的使用

时间:2019-04-10 14:06:59      阅读:124      评论:0      收藏:0      [点我收藏+]

需求:

  1、需要从一张mysql数据表中获取并筛选数据

  技术分享图片

  2、通过spark将该表读进来,形成一个df:DataFrame,有一个集合

    val list = List[String]("小李", "小王", "4", "5", "7")

  3、需要从df中进行筛选出来name在list中的值    

    df.where(‘name.isin(list)).show()  

  结果:   

  技术分享图片

  然而,isin(),看源码:

  技术分享图片

  里面需要的是一个可边长参数,我们想当然的把它当成了一个集合,此时不能将整个list传进去,但是我又要实现包含查询,但是又不想通过for循环遍历进行union的方式(这种方式是可以实现的,也就是说根据条件匹配list中的第一个值,然后将其定义成var,然后在遍历list中的每一个值作为条件,最后将其union起来,很笨,我一开始就这么干的),此时有一个新的办法,就是讲list改为list:_*

  df.where(‘name.isin(list:_*)).show()

  结果:

    技术分享图片

 搞定!!!

记录一下。


   

 

  
 

关于spark中DatatFrame函数操作中isin方法的使用

原文:https://www.cnblogs.com/Gxiaobai/p/10683001.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!