您如何在 pyspark 中过滤 RDD 的精确词?
How do you filter for an EXACT word for RDD in pyspark?
我是 Apache Spark 的新手,正在 运行 创建一个字数统计示例。在我得到带有字数的字词列表后,我现在想过滤 4 个特定字词。
我写了下面的代码:
output_result = list_RDD.filter(lambda x: "can" in x[0])
当我 运行 它时,我得到所有包含“can”的词,如“canada”、“candy”等。但我只想 return “can”。
还有没有办法让它遍历我要查找的单词列表?
例如我要搜索的词是['can'、'uni'、'over'、'day']
这是使用 pyspark SQL 函数的解决方案之一。
如果您想根据是否包含 words_list 中的某个词来过滤行,您可以使用 like:
import pyspark.sql.functions as func
words_list = ['can', 'uni', 'over', 'day']
df.filter(func.col('col_with_text').rlike('(^|\s)(' + '|'.join(words_list) + ')(\s|$)'))
如果要提取匹配正则表达式的字符串,可以使用regexp_extract
df.withColumn('extracted_word', func.regexp_extract('col_with_text', '(?=^|\s)(' + '|'.join(words_list) + ')(?=\s|$)', 0))
我是 Apache Spark 的新手,正在 运行 创建一个字数统计示例。在我得到带有字数的字词列表后,我现在想过滤 4 个特定字词。
我写了下面的代码:
output_result = list_RDD.filter(lambda x: "can" in x[0])
当我 运行 它时,我得到所有包含“can”的词,如“canada”、“candy”等。但我只想 return “can”。
还有没有办法让它遍历我要查找的单词列表?
例如我要搜索的词是['can'、'uni'、'over'、'day']
这是使用 pyspark SQL 函数的解决方案之一。
如果您想根据是否包含 words_list 中的某个词来过滤行,您可以使用 like:
import pyspark.sql.functions as func
words_list = ['can', 'uni', 'over', 'day']
df.filter(func.col('col_with_text').rlike('(^|\s)(' + '|'.join(words_list) + ')(\s|$)'))
如果要提取匹配正则表达式的字符串,可以使用regexp_extract
df.withColumn('extracted_word', func.regexp_extract('col_with_text', '(?=^|\s)(' + '|'.join(words_list) + ')(?=\s|$)', 0))