需求:

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  关于spark中DatatFrame函数操作中isin方法的使用 随笔 第1张

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

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

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

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

  结果:   

  关于spark中DatatFrame函数操作中isin方法的使用 随笔 第2张

  然而,isin(),看源码:

  关于spark中DatatFrame函数操作中isin方法的使用 随笔 第3张

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

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

  结果:

    关于spark中DatatFrame函数操作中isin方法的使用 随笔 第4张

 搞定!!!

记录一下。

 

   

 

  
 
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄