我正在尝试使用 Apache Spark 从管道(“|”)分隔文件生成格式化的 CSV 文件。输入文件包含:
apple|ball|cat
Blacktown| Bela vista| Greenacre
x|y|z
我正在尝试:
val name= sc.textFile(input.txt")
val split=name.map(line=>line.split("|")).map( x => (x(0),x(2)) )
split.foreach(println)
输出:
(x,y)
(a,p)
(B,a)
我需要的输出是:
(apple,cat)
(Blacktown, Greenacre)
(x,z)
最佳答案
split
函数的 String
参数是正则表达式,因此如果您想使用管道,则必须对其进行转义:
line.split("\\|")
否则它会被解释为两个空模式之间的交替。
您还可以使用variant which accepts Character
literal :
line.split('|')
或an Array
of Character
literals :
line.split(Array('|'))
最好验证输入:
names.map(_.split("\\|")).collect {
case Array(x, _, y) => (x, y)
}
关于scala - Apache Spark RDD 拆分 "|",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39948177/