需求:
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()
結果:
搞定!!!
記錄一下。