2016-10-24 71 views
1

在spark shell中,我正在讀取輸入文件並修剪字段值,然後使用saveAsTextFile()方法保存最終的rdd。輸入文件中的字段分隔符是'|'但在輸出文件中,我將字段分隔符設置爲','。如何在Spark中更改默認輸出分隔符

Input Format: abc | def | xyz 

Default Output Format: abc,def,xyz 

需要的輸出格式類似ABC | DEF | XYZ

反正是有改變默認輸出分隔符值「|」,如果是比請建議。

+0

可能[從火花輸出中刪除括號]的副本(http://stackoverflow.com/questions/29945330/remove-parentheses-from-output-in-spark) –

回答

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 
相關問題