前言
在Spark中,提供了多种文件格式的读取和保存的API。数据的读取和保存可以从两个维度来区分:文件格式和文件系统。
- 文件格式分类:text文件、Object文件和sequence文件。
- 文件系统分类:本地文件系统、HDFS等。
解释:
object文件:即对象文件,是将对象序列化后保存的文件,采用Java序列化机制。由于经过了序列化,故在读取数据的时候,需要指定对象类型。
sequence文件:是Hadoop用来存储二进制形式的K-V键值对而设计的一种平面文件(FlatFile)。读取数据的时候需要指定K-V所对应的数据类型。
文件保存
val conf = new SparkConf().setMaster("local").setAppName("Test") val sc = new SparkContext(conf) val rdd = sc.makeRDD(List( ("a", 1), ("b", 2), ("c", 3) )) // 保存为text文件 rdd.saveAsTextFile("output") // 保存为Object文件 rdd.saveAsObjectFile("output1") // 保存为sequence文件 rdd.saveAsSequenceFile("output2") sc.stop()
文件读取
val conf = new SparkConf().setMaster("local").setAppName("Test") val sc = new SparkContext(conf) // 读取text文件 val rdd = sc.textFile("output") println(rdd.collect().mkString(",")) // 读取object文件 val rdd1 = sc.objectFile[(String, Int)]("output1") println(rdd1.collect().mkString(",")) // 读取sequence文件 val rdd2 = sc.sequenceFile[String, Int]("output2") println(rdd2.collect().mkString(",")) sc.stop()
结语
好了,今天就为大家分享到这里了。咱们下期见!
如果本文对你有帮助的话,欢迎点赞&收藏&分享,这对我继续分享&创作优质文章非常重要。感谢🙏🏻