Spark文件的读取和保存

233 阅读1分钟

大家好,我是风云,欢迎大家关注我的博客 或者 微信公众号【笑看风云路】,在未来的日子里我们一起来学习大数据相关的技术,一起努力奋斗,遇见更好的自己!

前言

在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()

好了,今天的分享到这里结束了,咱们下期见!


想要获取更多大数据干货内容,请扫码关注微信公众号【笑看风云路】

weixin-myself.jpg