经过大量编程清理后我的数据集如下所示(此处显示部分数据集)。
ABCD A M@L 79
BGDA F D@L 89
我想将其转换为以下内容以进行进一步的 Spark Dataframe 操作
ABCD,A,M@L,79
BGDA,F,D@L,89
val reg = """/\s{2,}/"""
val cleanedRDD2 = cleanedRDD1.filter(x=> !reg.pattern.matcher(x).matches())
但这没有任何返回。如何使用定界符查找和替换空字符串? 谢谢! 回复
最佳答案
您似乎只想替换字符串数据中的所有非垂直空格。我建议使用 replaceAll
(替换所有匹配模式的文本)和 [\t\p{Zs}]+
正则表达式。
这里只是一个sample code :
val s = "ABCD A M@L 79\nBGDA F D@L 89"
val reg = """[\t\p{Zs}]+"""
val cleanedRDD2 = s.replaceAll(reg, ",")
print(cleanedRDD2)
// => ABCD,A,M@L,79
// BGDA,F,D@L,89
这里是 regex demo . [\t\p{Zs}]+
匹配 1 次或多次出现的制表符 (\t
) 或 Space Separator category 中的任何 Unicode 空格.
要修改RDD的内容,只需使用.map
:
newRDD = yourRDD.map(elt => elt.replaceAll("""[\t\p{Zs}]+""", ","))
关于regex - 删除 Spark 中 RDD 行中的连续空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37853531/