kru*_*z14 7 hadoop scala filewriter apache-spark
我正在写一个Scala代码,要求我写入HDFS中的文件.当我Filewriter.write在本地使用时,它的工作原理.同样的事情不适用于HDFS.经检查,我发现有下列选项中的Apache火花写
RDD.saveAsTextFile和DataFrame.write.format.
我的问题是:如果我只想在Apache Spark中为文件写一个int或字符串怎么办?
跟进:我需要在输出文件中写入一个标题,DataFrame内容然后追加一些字符串.有sc.parallelize(Seq(<String>))帮助吗?
Ron*_*tel 17
使用以下内容创建RDD数据(int/string)Seq:有关详细信息,请参阅parallelized-collections:
sc.parallelize(Seq(5)) //for writing int (5)
sc.parallelize(Seq("Test String")) // for writing string
Run Code Online (Sandbox Code Playgroud)
val conf = new SparkConf().setAppName("Writing Int to File").setMaster("local")
val sc = new SparkContext(conf)
val intRdd= sc.parallelize(Seq(5))
intRdd.saveAsTextFile("out\\int\\test")
Run Code Online (Sandbox Code Playgroud)
val conf = new SparkConf().setAppName("Writing string to File").setMaster("local")
val sc = new SparkContext(conf)
val stringRdd = sc.parallelize(Seq("Test String"))
stringRdd.saveAsTextFile("out\\string\\test")
Run Code Online (Sandbox Code Playgroud)
跟进示例:(经过如下测试)
val conf = new SparkConf().setAppName("Total Countries having Icon").setMaster("local")
val sc = new SparkContext(conf)
val headerRDD= sc.parallelize(Seq("HEADER"))
//Replace BODY part with your DF
val bodyRDD= sc.parallelize(Seq("BODY"))
val footerRDD = sc.parallelize(Seq("FOOTER"))
//combine all rdds to final
val finalRDD = headerRDD ++ bodyRDD ++ footerRDD
//finalRDD.foreach(line => println(line))
//output to one file
finalRDD.coalesce(1, true).saveAsTextFile("test")
Run Code Online (Sandbox Code Playgroud)
输出:
HEADER
BODY
FOOTER
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36809 次 |
| 最近记录: |