繁体   English   中英

写入Apache Spark中的文件

[英]Writing to a file in Apache Spark

我正在写一个Scala代码,要求我写入HDFS中的文件。 当我在本地使用Filewriter.write时,它可以工作。 同样的事情不适用于HDFS。 检查后,我发现在Apache RDD.saveAsTextFileDataFrame.write.format中有以下选项可供编写。

我的问题是:如果我只想在Apache Spark中为文件写一个int或字符串怎么办?

跟进:我需要在输出文件中写入一个标题,DataFrame内容然后追加一些字符串。 sc.parallelize(Seq(<String>))帮助吗?

使用Seq使用您的数据(int / string)创建RDD :有关详细信息,请参阅parallelized-collections

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

跟进示例:(测试如下)

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

这里有更多例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM