Spark每日半小时(16)——数据读取与保存概览

动机

我们已经学了很多在Spark中对已分发的数据执行的操作。到目前为止,所展示的示例都是从本地几个或者普通文件中进行数据读取和保存的。但有时候,数据量可能大到无法放在一台机器中,这时就需要探索别的数据读取和保存的方法了。

Spark支持很多种输入输出源。一部分原因是Spark本身是基于Hadoop生态圈而构建,特别是Spark可以通过Hadoop mr所使用的InputFormat和OutputFormat接口访问数据,而大部分常见的文件格式与存储系统都支持这种接口。

不过,基于这些原始接口构建出的高层API会更常用。幸运的是,Spark及其生态系统提供了很多可选方案。

  • 文件格式与文件系统

对于存储在本地文件系统或分布式文件系统中的数据,Spark可以访问很多中不同的文件格式,包括文本文件、JSON、SequenceFile,以及protocol buffer。我们会展示几种常见格式的用法,以及Spark针对不同文件系统的配置和压缩选项。

  • Spark SQL中的结构化数据源

后面会专门讲解Spark SQL,它针对包括JSON和Apache Hive在内的结构化数据源,为我们提供了一套更加简洁高效的API。此处会粗略地介绍下如何使用Spark SQL。

  • 数据库与键值存储

这里会概述Spark自带的库和一些三方库,他们可以用来连接Cassandra、HBase、Elasticsearch以及JDBC源。

文件格式

Spark对很多种文件格式的读取和保存方式都很简单。从注入文本文件的非结构化的文件,到注入JSON格式的半结构化的文件,再到注入SequenFile这样的结构化的文件,Spark都可以支持。Spark会根据文件扩展名选择对应的处理方式。这一过程是封装好的,对用户透明。

Spark支持的一些常见格式
格式名称结构化备注
文本文件普通的文本文件,每行一条记录
JSON半结构化常见的基于文本的格式,半结构化;大多数库都要求每行一条记录
CSV非常常见的基于文本的格式,通常在电子表格应用中使用
SequenceFile一种用于键值对数据的常见Hadoop文件格式
Protocol buffers一种快速、节约空间的跨语言格式
对象文件用来将Spark作业中的数据存储下来以让共享的代码读取。改变类的时候它会失效,因为它依赖于Java序列化

明天开始详细介绍文本文件的文件格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值