我在Spark中有以下命令:
data = sqlContext.sql("select column1, column2, column3 from table_name")
words = sc.textFile("words.txt")
words.txt
包含许多单词,数据有三个字符串列取自table_name
。
现在我想要过滤掉数据(spark dataframe)中每个单词的单词模式出现在任何三列数据中的行。
例如,如果words.txt
中有单词gon
,并且数据的任何三列包含值如bygone
、gone
等,我希望过滤掉该行。
我已经尝试了以下方法:
data.filter(~data['column1'].like('%gon%') | data['column2'].like('%gon%') | data['column3'].like('%gon%')).toPandas()
这适用于一个单词。但我想检查
words.txt
中的所有单词并将其删除。有没有方法可以做到这一点?我对 PySpark 很陌生。任何建议都将很有帮助。
(?s)^(?=.*gon)(?=.*tap)(?=.*wrap)
等等(请注意,此正则表达式在Python和Java中的工作方式相同),以要求任何字符串中都存在这些单词。 - Wiktor Stribiżewrlike
替换like
。 - zero323