2016-10-24 12 views
1

sparkシェルでは、入力ファイルを読み込み、次にsaveAsTextFile()メソッドを使用して最終的なrddを保存するフィールド値をトリミングします。入力ファイルのフィールド区切り文字は '|'です。出力ファイルでは、フィールド区切り文字を '、'として取得しています。Sparkのデフォルト出力デリミタの変更方法

Input Format: abc | def | xyz 

Default Output Format: abc,def,xyz 

ABCのように必要な出力形式の何か| DEF |「|」、そう提案してください比べた場合、XYZ

は、デフォルトの出力区切り値を変更することがとにかくあります。 RDDのために

+0

[sparkの出力から括弧を削除する]の複製(http://stackoverflow.com/questions/29945330/remove-parentheses-from-output-in-spark) –

答えて

1

、商品のイテレータにパイプ区切りの文字列を作るためにちょうど必要があります:

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 
関連する問題