0
我正在使用Pyspark 1.6版的Pyspark數據幀。在將此數據幀導出爲.CSV文件之前,我需要根據特定條件使用LIKE和OR運算符在一個特定列上過濾數據。爲了說明我迄今爲止所做的工作,我已經從多個.JSON文件創建了初始數據框。此數據框已被子集化,因此只包含所需的列。然後創建了一個sqlContext臨時表。到目前爲止,我嘗試了兩種不同的方法,使用sqlContext並使用Pyspark方法。Pyspark數據幀過濾語法錯誤
sqlContext方法:
df_filtered = sqlContext.sql("SELECT * from df WHERE text LIKE '#abc' OR 'abc' OR 'ghi' OR 'jkl' OR '#mno' OR '#1234' OR '56789'")
這是我提出的運行sqlContext方法時出現錯誤消息:
pyspark.sql.utils.AnalysisException: u"cannot resolve '(text LIKE #abc || abc)' due to data type mismatch: differing types in '(text LIKE #abc || abc)' (boolean and string).;"
pyspark方法:
df_filtered.where((df["text"].like ("#abc")) || ((brexit_april_2016["text"].like ("abc")) || ((brexit_april_2016["text"].like ("#ghi")) || ((brexit_april_2016["text"].like ("jkl")) || ((brexit_april_2016["text"].like ("#mno")) || ((brexit_april_2016["text"].like ("1234")) || ((brexit_april_2016["text"].like ("56789"))
當運行pyspark方法給我一個語法錯誤。
我確信這件事很簡單,我已經搞砸了,但我會很感激一些幫助。
謝謝!
嗨Anshul,這真的很有幫助謝謝你。令人煩惱的是,當我嘗試這個時,我得到一個錯誤,雖然與以前不同。它說「類型錯誤:'列'對象不可調用」。我是否需要更改代碼的'文本'部分,以便使用單引號(')? – Stig0501
這是我的錯,我沒有把足夠的'|'我的代碼中有符號(有很多條件!)。謝謝你的幫助! – Stig0501