数据读取与保存
spark支持常见的如文本文件、json格式、csv格式、SequenceFiles格式(Hadoop的一种键值对数据)以及对象的序列化
如果是本地文件系统的话路径为file://开头,如果是hdfs文件系统为hdfs://开头
文本文件
1 2 3 4 5
| sc.textFile("file:///Users/zhanghe/Desktop/1.txt")
lines.saveAsTextFile("file:///Users/zhanghe/Desktop/2.txt")
|
JSON
使用JSON工具如fastJson、GSON、Jackson来操作字符串或对象来进行读取和写入
1 2
| 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
| sc.sequenceFile(inputFile,classOf[Text],classOf[IntWritable])
sc.parallelize(List(("zs",1))).saveAsSequenceFile(output)
|