RDD行动Action操作(5)–saveAsTextFile、saveAsSequenceFile、saveAsObjectFile


saveAsTextFile

def saveAsTextFile(path: String): Unit

def saveAsTextFile(path: String, codec: Class[_ <: CompressionCodec]): Unit

saveAsTextFile用于将RDD以文本文件的格式存储到文件系统中。

codec参数可以指定压缩的类名。

 
 
  1. var rdd1 = sc.makeRDD(1 to 10,2)
  2. scala> rdd1.saveAsTextFile("hdfs://cdh5/tmp/lxw1234.com/") //保存到HDFS
  3. hadoop fs -ls /tmp/lxw1234.com
  4. Found 2 items
  5. -rw-r--r-- 2 lxw1234 supergroup 0 2015-07-10 09:15 /tmp/lxw1234.com/_SUCCESS
  6. -rw-r--r-- 2 lxw1234 supergroup 21 2015-07-10 09:15 /tmp/lxw1234.com/part-00000
  7.  
  8. hadoop fs -cat /tmp/lxw1234.com/part-00000
  9. 1
  10. 2
  11. 3
  12. 4
  13. 5
  14. 6
  15. 7
  16. 8
  17. 9
  18. 10
  19.  

注意:如果使用rdd1.saveAsTextFile(“file:///tmp/lxw1234.com”)将文件保存到本地文件系统,那么只会保存在Executor所在机器的本地目录。

//指定压缩格式保存

 
 
  1. rdd1.saveAsTextFile("hdfs://cdh5/tmp/lxw1234.com/",classOf[com.hadoop.compression.lzo.LzopCodec])
  2.  
  3. hadoop fs -ls /tmp/lxw1234.com
  4. -rw-r--r-- 2 lxw1234 supergroup 0 2015-07-10 09:20 /tmp/lxw1234.com/_SUCCESS
  5. -rw-r--r-- 2 lxw1234 supergroup 71 2015-07-10 09:20 /tmp/lxw1234.com/part-00000.lzo
  6.  
  7. hadoop fs -text /tmp/lxw1234.com/part-00000.lzo
  8. 1
  9. 2
  10. 3
  11. 4
  12. 5
  13. 6
  14. 7
  15. 8
  16. 9
  17. 10
  18.  
  19.  

saveAsSequenceFile

saveAsSequenceFile用于将RDD以SequenceFile的文件格式保存到HDFS上。

用法同saveAsTextFile。

saveAsObjectFile

def saveAsObjectFile(path: String): Unit

saveAsObjectFile用于将RDD中的元素序列化成对象,存储到文件中。

对于HDFS,默认采用SequenceFile保存。

 
 
  1. var rdd1 = sc.makeRDD(1 to 10,2)
  2. rdd1.saveAsObjectFile("hdfs://cdh5/tmp/lxw1234.com/")
  3.  
  4. hadoop fs -cat /tmp/lxw1234.com/part-00000
  5. SEQ !org.apache.hadoop.io.NullWritable"org.apache.hadoop.io.BytesWritableT
  6.  
  7.  

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com