2016-12-01 58 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() 
相關問題