年度案例大数据盘点之Spark篇

本文详细介绍了Spark从1.2.1到1.5.2版本的重要特性,包括DataFrame API和Tungsten项目。DataFrame API统一了Spark对结构化数据的处理,简化编程工作。Tungsten项目通过内存管理和二进制格式处理、缓存友好的计算和代码生成,提高Spark执行引擎的效率。Spark在Hulu的实践中,用于处理大量用户行为数据,解决StackOverflow问题和延迟数据接收机制。未来,Spark 1.6将引入统一内存管理和DataSet API,进一步优化性能和用户体验。
摘要由CSDN通过智能技术生成

Spark 最新的特性以及功能

年度案例大数据盘点之Spark篇2015 年中 Spark 版本从 1.2.1 升级到当前最新的 1.5.2,1.6.0 版本也马上要进行发布,每个版本都包含了许多的新特性以及重要的性能改进,我会按照时间顺序列举部分改进出来,希望大家对 Spark 版本的演化有一个稍微直观的认识。

由于篇幅关系,这次不能给大家一一讲解其中每一项改进,因此挑选了一些我认为比较重要的特性来给大家讲解。如有遗漏和错误,还请帮忙指正。

Spark 版本演化

首先还是先来看一下 Spark 对应版本的变化:

年度案例大数据盘点之Spark篇

先来一个整体的介绍:1.2 版本主要集中于 Shuffle 优化, 1.3 版本主要的贡献是 DataFrame API, 1.4 版本引入 R API 并启动 Tungsten 项目阶段,1.5 版本完成了 Tungsten 项目的第一阶段,1.6 版本将会继续进行 Tungsten 项目的第二个阶段。而我下面则重点介绍 DataFrame API 以及 Tungsten 项目。

DataFrame 介绍

DataFrame API 是在 1.3.0 中引入的,其目的是为了统一 Spark 中对结构化数据的处理。在引入 DataFrame 之前,Spark 之有上针对结构化数据的 SQL 查询以及 Hive 查询。

这些查询的处理流程基本类似:查询串先需要经过解析器生成逻辑查询计划,然后经过优化器生成物理查询计划,最终被执行器调度执行。

而不同的查询引擎有不同的优化器和执行器实现,并且使用了不同的中间数据结构,这就导致很难将不同的引擎的优化合并到一起,新增一个查询语言也是非常艰难。

为了解决这个问题,Spark 对结构化数据表示进行了高层抽象,产生了 DataFrame API。简单来说 DataFrame 可以看做是带有 Schema 的 RDD(在1.3之前DataFrame 就叫做 SchemaRDD,受到 R 以及 Python 的启发改为 DataFrame这个名字)。

在 DataFrame 上可以应用一系列的表达式,最终生成一个树形的逻辑计划。这个逻辑计划将会经历 Analysis, Logical Optimization, Physical Planning 以及 Code Generation 阶段最终变成可执行的 RDD,如下图所示:

年度案例大数据盘点之Spark篇

在上图中,除了最开始解析 SQL/HQL 查询串不一样之外,剩下的部分都是同一套执行流程,在这套流程上 Spark 实现了对上层 Spark SQL, Hive SQL, DataFrame 以及 R 语言的支持。

年度案例大数据盘点之Spark篇

下面我们来看看这些语言的简单示例:Spark SQL : val count = sqlContext.sql("SELECT COUNT(*) FROM records").collect.head.getLong(0)

年度案例大数据盘点之Spark篇

年度案例大数据盘点之Spark篇

年度案例大数据盘点之Spark篇

各个语言的使用方式都很类似。除了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值