我有一个csv文件,只有一列,行定义如下:
123 || food || fruit
123 || food || fruit || orange
123 || food || fruit || apple
我想创建一个csv文件,其中包含一列和不同的行值,如下所示:
orange
apple
我尝试使用以下代码:
val data = sc.textFile("fruits.csv")
val rows = data.map(_.split("||"))
val rddnew = rows.flatMap( arr => {
val text = arr(0)
val words = text.split("||")
words.map( word => ( word, text ) )
} )
但是这个代码并没有给我想要的正确结果。
有人能帮我吗?
2条答案
按热度按时间s3fp2yjn1#
对于特殊字符,需要使用转义进行拆分,因为拆分需要正则表达式
转换为csv很棘手,因为数据字符串可能包含分隔符(引号中)、新行或其他解析敏感字符,所以我建议使用spark csv
和
mfuanj7w2#
您可以像下面的代码一样解决这个问题