2016-12-01 7 views
0

私はリストでは利用できない行をフィルタ処理しようとしていますフィルタ行は、文字列のリストには存在しないか

var input1 = spark.createDataFrame(Seq(
     (10L, "Joe Doe", 34), 
     (11L, "Jane Doe", 31), 
     (12L, "Alice Jones", 25) 
     )).toDF("id", "name", "age") 

データフレームを持っています。 私は簡単に年齢やIDに基づいてフィルタリングすることができます -

input1.filter("age not in (31,56,81)").show() 

をしかし、私はフィルタリングしながら、文字列の一部の表現が存在しなければならない名前

input1.filter("name not in ("joe Doe","Pappu cam","Log")").show() 

に基づいてフィルタリングしようとしていたときと同じに機能していません。

私は例外取得しています

org.apache.spark.sql.catalyst.parser.ParseException: 
extraneous input 'Doe' expecting {')', ',', '.', '[', 'OR', 'AND', 'IN', NOT, 'BETWEEN', 'LIKE', RLIKE, 'IS', EQ, '<=>', '<>', '!=', '<', LTE, '>', GTE, '+', '-', '*', '/', '%', 'DIV', '&', '|', '^'}(line 1, pos 16) 
== SQL == 
name not in (Joe Doe,abc dej) 
----------------^^^ 

答えて

2

は、構文エラーのように思えます。 試し:

input1.filter("name not in ('joe Doe','Pappu cam','Log')").show() 
1

は、SQLクエリをエスケープしてみてください。

input1.filter(s"""name not in ("joe Doe","Pappu cam","Log")""").show() 
関連する問題