2016-10-24 2 views
1

В искровой оболочке я читаю входной файл и обрезаю значения полей после сохранения окончательного rdd с помощью метода saveAsTextFile(). Разделитель полей во входном файле равен '|' но в выходном файле я получаю разделитель полей как ','.Как изменить разделитель вывода по умолчанию в Spark

Input Format: abc | def | xyz 

Default Output Format: abc,def,xyz 

Требуемый формат вывод что-то вроде аЬса | Защита | хуг

Есть в любом случае для изменения значения разделителей вывода по умолчанию «|», если да, то чем пожалуйста, предложите.

+0

Возможные дублировать [удалить круглые скобки из вывода в искровом режиме] (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 
Смежные вопросы