如何在Spark中更改默认输出分隔符

时间:2016-10-24 06:17:56

标签: hadoop apache-spark

在spark shell中,我正在读取输入文件并修剪字段值,然后使用saveAsTextFile()方法保存最终的rdd。输入文件中的字段分隔符为“|”但是在输出文件中我将字段分隔符设为','。

Input Format: abc | def | xyz

Default Output Format: abc,def,xyz

所需的输出格式类似 abc | def | xyz

无论如何都要将默认输出分隔符值更改为“|”,如果是,请提示。

1 个答案:

答案 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