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

  結果:

    

 搞定!!!

記錄一下。

 
        

   

 

  
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM