5.1 动机
三类常见的数据源:
1)文件格式与文件系统
2)Spark SQL中的结构化数据源
3)数据库与键值存储
5.2 文件格式
对多种文件格式的读取和保存方式都很简单。
5.2.1 文本文件
- 读取文本文件
- textFile()
- wholeTextFiles()
2.保存文本文件
- saveAsTextFile()
接收一个路径, 会在那个目录下输出多个文件,这样,Spark可以从多个节点上并行输出。
5.2.2 JSON
-
读取JSON
将数据作为文本文件读取。 -
保存JSON
字符串RDD写出文件
5.2.3 逗号分隔值与制表符分隔值(csv)
- 读取CSV
文件 - 保存CSV
文件
5.2.4 SequenceFile
常用的Hadoop格式。
5.2.5 对象文件
5.2.6 Hadoop输入输出格式
5.3 文件系统
支持读写很多种文件系统
5.3.1 本地/"常规"文件系统
只需要指定输入为一个file://路径
5.3.2 Amazon S3
5.3.3 HDFS
使用HDFS,只需要将输入输出路径指定为hdfs://master:port/path就够了。
5.4 Spark SQL中的结构化数据
把一条SQL查询给Spark SQL,让它对一个数据源执行查询,然后得到由Row对象组成的RDD,每个Row对象表示一条记录。Row对象的访问是基于下标。
5.4.1 Apache Hive
5.4.2 JSON
要读取JSON数据,和使用Hive一样创建一个HiveContext,然后使用HiveContext.jsonFile方法从整个文件中获取有Row对象组成的RDD。
5.5 数据库
通过数据库提供的Hadoop连接器或者自定义的Spark连接器,Spark可以访问一些常用的数据库系统
5.5.1 Java数据库连接
可以从任何支持Java数据库连接(JDBC)的关系型数据库中读取数据。
5.5.2 Cassandra
5.5.3 HBase
5.5.4 Elasticsearch
5.6 总结