首页 > 解决方案 > 如何使用 pyspark 替换 RDD 中的字符?

问题描述

我有看起来像这样的RDD:

[['M5126', 'M5416', 'Z4789', 'Z01810', 'S060X6D', 'S9032XA', 'S96912A', 'S72002A', 'S61411A', 'W268XXA', 'Y9269', 'Z23'], ['S62639B', 'M25512', 'M1712', 'M25612', 'M62512', 'S39012D', 'S39012A', 'M25511', 'Z98890', '11', '29', 'Z5189']]

如何将逗号替换为波浪号,以便我的 RDD 如下所示:

['M51~ M541~ Z4789~ Z01810~ S060X6D~ S9032XA~ S96912~ S72002A~ S61411A~ W268XXA~ Y9269~ Z23~S62639B~ M25512~ M1712~ M25612~ M62512~ S39012D~ S39012A~ M25511~ Z98890~ 11~ 29~ Z5189']

rdd = rdd.map(lambda row: "~".join([str(cd) for cd in row])).reduce(lambda x,y: "~".join([x,y]))

但它使它变成一个长字符串。

标签: apache-sparkpysparkrdd

解决方案


只需在连接字符串中添加一个空格...?

result = [rdd.map(lambda row: "~ ".join([str(cd) for cd in row])).reduce(lambda x,y: "~ ".join([x,y]))]

这使

['M5126~ M5416~ Z4789~ Z01810~ S060X6D~ S9032XA~ S96912A~ S72002A~ S61411A~ W268XXA~ Y9269~ Z23~ S62639B~ M25512~ M1712~ M25612~ M62512~ S39012D~ S39012A~ M25511~ Z98890~ 11~ 29~ Z5189']

推荐阅读