在spark shell中,我正在读取输入文件并修剪字段值,然后使用saveAsTextFile()方法保存最终的rdd。输入文件中的字段分隔符为“|”但是在输出文件中我将字段分隔符设为','。
Input Format: abc | def | xyz
Default Output Format: abc,def,xyz
所需的输出格式类似 abc | def | xyz
无论如何都要将默认输出分隔符值更改为“|”,如果是,请提示。
答案 0 :(得分:1)
对于RDD,您只需要在产品迭代器上创建一个带有管道分隔值的字符串:
scala> val rdd = sc.parallelize(Seq(("a", 1, 3), ("b", 2, 10)))
// rdd: org.apache.spark.rdd.RDD[(String, Int, Int)] = ParallelCollectionRDD[11] at parallelize at <console>:27
scala> rdd.map { x => x.productIterator.toSeq.mkString("|") }
// res9: Array[String] = Array(a|1|3, b|2|10)
scala> scala> rdd.map { x => x.productIterator.toSeq.mkString("|") }.saveAsTextFile("test")
现在让我们检查一下文件的内容:
$ cat test/part-0000*
a|1|3
b|2|10