微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何对RDD进行字符串转换?

如何解决如何对RDD进行字符串转换?

我有一些文档,我必须从中提取每个单词,然后每个文档使用 Pyspark 汇总该单词出现的次数。我已设法将其转换为以下格式

["of#['d2:3','d4:10','d1:6','d3:13','d5:6','d6:9','d7:5']","is#['d2:3','d4:8','d1:5','d3:1','d5:4','d6:6','d7:1']","country#['d2:3','d1:1','d5:2','d6:2']","in#['d2:5','d4:13','d1:2','d3:2','d6:3','d7:3']","seventh#['d2:1']"]

如何将上述 rdd 转换为类似的内容

of#d2:3,d4:10,d1:6,d3:13,d5:6,d6:9,d7:5,is#d2:3,d4:8,d1:5,d3:1,d5:4,d6:6,d7:1,country#d2:3,d1:1,d5:2,d6:2,in#d2:5,d4:13,d1:2,d3:2,d6:3,d7:3,seventh#d2:1

我尝试了以下代码行,但出现错误。希望能提供一些关于我哪里出错的意见。

print(x.map(lambda x:str(x[0])+"#"+str(x[1])).take(5))

解决方法

您似乎只想从这些字符串值中删除方括号和单引号。

你可以这样做:

import re

rdd1 = rdd.map(lambda x: re.sub(r"[\['\]]","",x))

for i in rdd1.collect():
    print(i)
    
# of#d2:3,d4:10,d1:6,d3:13,d5:6,d6:9,d7:5
# is#d2:3,d4:8,d1:5,d3:1,d5:4,d6:6,d7:1
# country#d2:3,d1:1,d5:2,d6:2
# in#d2:5,d4:13,d1:2,d3:2,d6:3,d7:3
# seventh#d2:1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。