如何替换/删除 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从一个rdd中删除元素并在pyspark中创建新的rdd?