zoukankan      html  css  js  c++  java
  • 关于spark中DatatFrame函数操作中isin方法的使用

    需求:

      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()

      结果:

        

     搞定!!!

    记录一下。

    
    

       

      
     
  • 相关阅读:
    spring给容器中注入组件的几种方式
    Linux多进程
    Linux多进程的应用
    Linux进程通信
    Linux信号
    Linux共享内存
    Linux信号量
    Linux多线程
    Linux线程同步
    Linux调用可执行程序
  • 原文地址:https://www.cnblogs.com/Gxiaobai/p/10683001.html
Copyright © 2011-2022 走看看