我正在使用 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 方法时,出现语法错误。
我敢肯定,我在这里搞砸了一些非常简单的事情,但我希望得到一些帮助。
谢谢!
df_filtered = df.filter(
(df.text.like("#abc")) | (df.text.like("abc")))
"like" and or ("|") 在 PySpark 中应该像这样使用。您可以根据需要添加更多条件。
我希望这有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句