在apachespark中写入文件

zlhcx6iw  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(350)

我正在编写一个scala代码,它要求我在hdfs中写入一个文件。当我使用 Filewriter.write 在本地,它是有效的。同样的事情在hdfs上不起作用。经过检查,我发现在apache spark中可以编写以下选项- RDD.saveAsTextFile 以及 DataFrame.write.format .
我的问题是:如果我只想在apachespark中给文件写一个int或字符串呢?
后续:我需要向输出文件写入一个头文件、Dataframe内容,然后附加一些字符串。做 sc.parallelize(Seq(<String>)) 救命啊?

yk9xbfzb

yk9xbfzb1#

跟进示例:(测试如下)

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")

输出:

HEADER
BODY
FOOTER

这里有更多的例子。

jogvjijk

jogvjijk2#

创建 RDD 数据(int/string)使用 Seq :有关详细信息,请参阅并行集合:

sc.parallelize(Seq(5))  //for writing int (5)
sc.parallelize(Seq("Test String")) // for writing string
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")
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")

相关问题