如何替换/删除 PySpark RDD 中的正则表达式?

Posted

技术标签:

【中文标题】如何替换/删除 PySpark RDD 中的正则表达式?【英文标题】:How to replace/remove regular expression in PySpark RDD? 【发布时间】:2018-04-08 00:59:53 【问题描述】:

我的句子是, “我好想把这个字符串去掉。” 我将此文本文件传递为

text = sc.textFile(...)

我想过滤掉(即删除)单词“string” 我注意到在 python 中,有一个“re”包。 我试过做

RDD.map(lambda x: x.replaceAll("<regular expression>", ""))

过滤掉“字符串”,但似乎 PySpark 中没有这样的功能,因为它给了我一个错误.. 如何导入“重新”包?或者是否有任何其他函数可以用来根据 PySpark 中的正则表达式删除/过滤掉某些字符串?

【问题讨论】:

【参考方案1】:

你可以简单的导入re包,如下图。

import re

text = sc.textFile(...)

out = re.sub("string", '', text)
print out

【讨论】:

看起来是一个可行的解决方案。也许您可以在答案中添加一些 cmets 以使其更加个性化和有用。【参考方案2】:

我不确定 Spark 中文本的特定配置,但一般的方法(对于任何类型的 var)是使用 .map() 方法。

例如:

RDD.map(lambda s: s.replace("string",""))

【讨论】:

.replace() 中的“字符串”可以是正则表达式的形式吗? 根据to this threadreplace 做不到,但是使用re 可以做到。

以上是关于如何替换/删除 PySpark RDD 中的正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pySpark 中有效地从字符串数据框中替换多个正则表达式模式的所有实例?

删除 RDD、Pyspark 中的停用词

如何删除元素如何根据另一个rdd从一个rdd中删除元素并在pyspark中创建新的rdd?

pyspark 如何像在 scala .drop 中一样删除 rdd 列

如何从任何数据库表创建 PySpark RDD?

如何在 PySpark 中的 RDD 中的列中查找标准差