2015-11-29 4 views
7

と、私は次のコードでスパークデータフレームをフィルタリングすることを試みた:フィルタスパークDATAFRAME、簡略化した例のような他の基準

val xdf = sqlContext.createDataFrame(Seq(
    ("A", 1), ("B", 2), ("C", 3) 
)).toDF("name", "cnt") 
xdf.filter($"cnt" >1 || $"name" isin ("A","B")).show() 

次に、エラー:

org.apache.spark.sql.AnalysisException: cannot resolve '((cnt > 1) || name)' due to data type mismatch: differing types in '((cnt > 1) || name)' (boolean and string).; 

正しい方法は何ですか?それはname列の後で読むのを止めるようです。パーサのバグですか?私はあなたが、個々の表現を括弧する必要が1.5.1

答えて

12

火花を使用しています:

xdf.filter(($"cnt" > 1) || ($"name" isin ("A","B"))).show() 
15

これはあなたを助けることを望ん:

val list = List("x","y","t") 
xdf.filter($"column".isin(list:_*)) 
+2

'ん何:_ *'か? –

+1

Scalaの注釈機能です。 – pschilakanti

+0

それはどういう意味ですか? –

関連する問題