数据读取与保存
Spark 支持很多种输入输出源,一部分原因是Spark本身是基于Hadoop生态圈而构建,特别是Spark可以通过Hadoop MapReduce 所使用的InputFormate和 OutputFormate接口访问数据。而大部分常见的文件格式和存储系统都支持这种接口
数据源:
文件格式与文件系统
对于存储在本地文件系统或分布式文件系统(NFS\HDFS)中的数据,spark针对不同文件(文本 json sequenceFile)有不同的配置和压缩选项
SparkSQL中的结构化数据源
针对JSON和ApacheHive在内的结构化数据源,为我们提供了一套更简洁的API。
数据库与键值存储
jdbc源 elasticsearch
5.2 文件格式
Spark 支持的格式:JSON/CSV/SequenceFiles(键值对数据的常见Hadoop文件格式)/ProtocolBuffers(跨语言格式)
对象文件。
文本文件:
在Spark中读写文本文件很容易,将一个文本文件读取为RDD时,输入的每一行都会成为RDD的一个元素。也可以将
多个完整的文本文件一次性读取为一个pairRDD,其中键是文件名,值是文件内容。
sc.textFile(“文件路径”)
sc.wholeTextFiles(“文件路径”) key是文件名,value是文件内容
保存文本文件:result.saveAsTextFile(outputFile)
JSON:
1.读取JSON
将数据作为文本文件读取,然后对JSON数据进行解析,这样的方法可以在所有支持的编程语言中使用。
mapPartitions/ObjectMapper
csv文件
map CSVReader CSVWriter /StringReader StringWriter
读: 将字符串解析为数组
存:将字符串数据解析成字符串,用逗号隔开
SequenceFile
对象文件
saveAsObjectFile :保存
objectFile:接收
Hadoop输入输出格式
文件压缩:
通过数据压缩可以节省存储空间和网路传输开销.
5.3 文件系统
本地文件/HDFS
5.4 SPark SQL中的结构化数据
把一条SQL查询给SPARK SQL ,让他对一个数据源执行查询,然后得到由ROW对象组成的RDD,每个Row对象表示
一条记录。在Java 和Scala中Row对象的访问时基于下标的,每个ROW都有一个get(),会返回一个一般类型让我们可以
进行类型转换,另外还有针对常见基本类型的专用get()
5.5 数据库