Pyspark数据帧过滤语法错误

时间:2017-07-26 22:39:18

标签: pyspark pyspark-sql

我正在使用Pyspark版本1.6使用Pyspark数据框架。在将此数据帧导出到.CSV文件之前,我需要使用一个特定列上的LIKE和OR运算符根据某些条件过滤数据。为了介绍我到目前为止所做的工作,我已经从多个.JSON文件创建了初始数据框。此数据框已进行子集化,因此仅包含所需的列。然后创建了一个sqlContext临时表。到目前为止,我尝试了两种不同的方法,使用sqlContext并使用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方法时,出现语法错误。

我确定这件事非常简单,我已经搞砸了,但我会感激一些帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

df_filtered = df.filter(
    (df.text.like("#abc")) | (df.text.like("abc")))

"喜欢"和/(" |")应该在PySpark中使用。您可以根据需要添加更多条件。

我希望这会有所帮助。