Spark - RDD使用详解9(文件的读取与保存:text、sequence、object)
作者:hangge | 2023-10-23 09:00
十二、文件的读取与保存
1,读取与保存文本文件
(1)使用 textFile 方法可以从本地文件系统或者分布式文件系统(HDFS)上读取文本文件,该方法返回一个 RDD 对象,其中每个元素是文件中的一行文本。
val rdd: RDD[String] = sc.textFile("datas/word.txt") rdd.collect().foreach(println)
(2)使用 saveAsTextFile 方法可以将 RDD 数据以 text 文本的方式保存到文件系统中:
val rdd = sc.makeRDD(List(1,2,3,4,5,6,7,8,9,10,11,12,13)) rdd.saveAsTextFile("output")
2,读取与保存 sequence 文件
(1)SequenceFile 文件是 Hadoop 用来存储二进制形式的 key-value 对而设计的一种平面文件(Flat File)。使用 saveAsSequenceFile 方法可以将 RDD 以 SequenceFile 文件格式保存在 HDFS 上:
val rdd = sc.makeRDD(Array((1,"a"),(2,"b"),(3,"c"),(4,"d"),(5,"e"))) rdd.saveAsSequenceFile("output")
(2)使用 sequenceFile 方法则可读取 Sequence 文件,该方法返回一个 RDD 对象:
val rdd = sc.sequenceFile[Int, String]("output") rdd.collect().foreach(println)
3,读取与保存 object 对象文件
(1)对象文件是将对象序列化后保存的文件,采用 Java 的序列化机制。可以使用 saveAsObjectFile 方法将 RDD 以序列化对象的格式保存到指定路径:
val rdd = sc.makeRDD(Array((1,"a"),(2,"b"),(3,"c"),(4,"d"),(5,"e"))) rdd.saveAsObjectFile("output")
(2)使用 objectFile 方法可以读取对象文件,返回对应的 RDD:
val rdd = sc.objectFile[(Int, String)]("output") rdd.collect().foreach(println)
全部评论(0)