0%

数据读取与保存

数据读取与保存

spark支持常见的如文本文件、json格式、csv格式、SequenceFiles格式(Hadoop的一种键值对数据)以及对象的序列化

如果是本地文件系统的话路径为file://开头,如果是hdfs文件系统为hdfs://开头

文本文件

1
2
3
4
5
// 读取
sc.textFile("file:///Users/zhanghe/Desktop/1.txt")

// 写入 lines是rdd
lines.saveAsTextFile("file:///Users/zhanghe/Desktop/2.txt")

JSON

使用JSON工具如fastJson、GSON、Jackson来操作字符串或对象来进行读取和写入

1
2
// 写入  mapper使用的是Jackson
lines.map(mapper.writeValueAsString(_)).saveAsTextFile(outputFile)

CSV

CSV使用逗号来将字段分隔开,也是使用相关CSV工具来进行操作,如使用opencsv

1
2
3
4
5
6
7
// 写入
lines.mapPartitions{line =>
val stringWriter = new StringWriter();
val csvWriter = new CSVWriter(stringWriter);
csvWriter.writeAll(line.toList)
Iterator(stringWriter.toString)
}.saveAsTextFile(outputFile)

SequenceFiles

这种Hadoop的特殊格式,spark中提供了专门的方法来读取和写入

1
2
3
4
// 读取  path,keyClass,valueClass
sc.sequenceFile(inputFile,classOf[Text],classOf[IntWritable])
// 写入 需要使用PairRDD
sc.parallelize(List(("zs",1))).saveAsSequenceFile(output)

欢迎关注我的其它发布渠道