“云无界、端无边” OGeek 技术峰会 9月17日 南京不见不散! 了解详情
写点什么

Spark 1.6 发布:引入 Dataset 接口

  • 2016 年 1 月 05 日
  • 本文字数:1701 字

    阅读完需:约 6 分钟

今天,Databricks 宣布发布 Apache Spark 1.6! 这也是开源社区开发的一个里程碑,2015 年代码贡献者达到 1000 人,是 2014 一整年的两倍,见下图。

接下来揭开 Spark 1.6 新发布的功能。

Spark 1.6 包含了超过 1000 个 patches,在这里主要展示三个方面的主题:新的 Dataset API,性能提升 (读取 Parquet 50% 的性能提升,自动内存管理,streaming state management 十倍的性能提升),以及大量新的机器学习和统计分析算法。

性能提升

根据 2015 年 Spark 官方调研发现,91% 的用户觉得性能提升是 Spark 最重要的方面。因此,性能优化是 Spark 开发一直的关注点。

读取 Parquet 性能提升:Parquet 是在 Spark 使用中最常用的数据格式。Parquet 读取性能对海里数据应用有着极其重大的影响。在过去,Spark 中读取 Parquet 依赖于 Parquet 的 (parquert-mr)MR 来读取并解析 Parquet 文件。当我们优化 Spark 程序时,你会发现太多的时间消耗在从 Parquet 列解析成记录集的过程中。而在 Spark 1.6 中 Databricks 采用一种新型的 Parquet reader 读取器,它可以避开”parquert-mr”式的记录集解析,并使用更加优化的字节码路径来解析 Parquet 的 schemas。在基准测试中可以发现,新型的 Parquet reader 读取器读取 Parquet 文件有 50% 的性能提升 (从 2.9 million/ 秒提升到 4.5million/ 秒)。

自动内存管理:Spark 1.6 另外一个性能提升是在内存管理方面。在 Spark 1.6 之前,Spark 静态地把内存划分成两部分:execution memory 和 cache memory。Execution memory 主要用来做 sort,hash 和 shuff。Cache memory 是用来缓存热点数据的。Spark 1.6 引进新的内存管理机制能自动调节这两种内存的区域,运行时自动增长,回收时根据执行的应用适时进行。

这意味着在无需用户干预的情况下使用 join 和 aggregation 操作时内存的自适应有大幅的提升。

对于读取 Parquet 和自动内存管理两种性能提升也不需要开发者更改老版本的代码。

streaming state management 十倍的性能提升:State management 是 Spark Streaming 应用开发里重要的功能,经常用来保存聚合信息或 session 信息。通过社区开发者的反馈,Databricks 重新设计了 state management API,并引入 mapWithState API (可随 updates 的数目线性扩展)。这意味着能更有效的跟踪增量变化,而不是每次 update 都要对数据进行一次全 scan。Databricks 已经创建了一个 notebook 来展示怎么使用这个 new feature,后面会发 blog 进一步对这个功能进行详细讲解。

Dataset API

在今年早些时候 Spark 引入 DataFrame,它可以提供 high-level functions 让 Spark 更好的处理数据结构和计算。这让 Catalyst optimizer Tungsten execution engine 自动加速大数据分析。

发布 DataFrame 之后开发者收到了很多反馈,其中一个主要的是大家反映缺乏编译时类型安全。为了解决这个问题,Spark 采用新的 Dataset API (DataFrame API 的类型扩展)。

Dataset API 扩展 DataFrame API 支持静态类型和运行已经存在的 Scala 或 Java 语言的用户自定义函数。对比传统的 RDD API,Dataset API 提供更好的内存管理,特别是在长任务中有更好的性能提升,请参见 blog

新的数据科学功能

机器学习管道持久化:现在许多机器学习的应用采用 Spark 的 ML pipeline 功能来构建机器学习 pipelines。老版本中,如果想在外部存储 pipeline,需要用户自己完成持久化代码部分。在 Spark 1.6 中已经提供了对应的 function 来存储和重新加载 pipelines,并把先前的 models 应用到新的数据中。

大量新的机器学习和统计分析算法:

这次发布增加了以下算法:

· 无偏估计统计

· 生成分析

· 最小二乘法的归一化

· 二分 k 均值聚类算法

· 在线假设检验

· LDA 算法

· 支持 R 语言的广义线性模型的统计

· 公式的交互

· 支持 R 语言的广义线性模型的权重

· LIBSVM 数据源

· 支持非标准的 JSON 数据

感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2016 年 1 月 05 日 00:304993
用户头像

发布了 43 篇内容, 共 26.0 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

RocketMQ安装部署

云淡风轻

RocketMQ

十亿级流量的搜索前端,是怎么做架构升级的?

百度Geek说

大前端 架构设计

有效括号入门题:使用栈能够解决超过一半的「有效括号」问题 ...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

接口测试--apipost变量使用(一)

测试人生路

如果软件测试行业没门槛了,你开心么?

程序员阿沐

软件测试 自动化测试 测试开发 测试工程师 黑盒测试

nginx 惊群处理及原子锁技术

赖猫

nginx 高并发 服务器开发 C++后台开发

没有数据的AI是空中楼阁

罗森内里大伊布

大数据 保险 保险科技 水滴公司

javascript中的闭包closure详解

程序那些事

JavaScript nodejs 闭包 程序那些事 closure

高效搜索信息,你需要掌握这些谷歌搜索技巧

LeanCloud

开发者 大前端 工作效率

区块链通证经济的本质与落地路径/通证经济的趋势与发展

CECBC

区块链

产品 0 期 - 第五周作业

vipyinzhiwei

程序员成长第十八篇:项目上线

石云升

项目管理 程序员 28天写作 3月日更

第五周作业

郭郭

我的健身之路.md

Changing Lin

3月日更

Kubernetes 稳定性保障手册 -- 日志专题

阿里巴巴云原生

容器 开发者 云原生 k8s 监控

谈谈职业发展中的“收入”问题

一笑

28天写作

最新热点:钉钉公布低代码开发者画像,这些数据意味着什么?

优秀

与 Hadoop 对比,我是如何看待 Spark 技术?

TASKCTL

大数据 hadoop spark 存储

SQL Server 多表数据增量获取和发布 2.2

happlyfox

数据库 学习 28天写作 3月日更

产品经理训练营 Week7 学习心得

Mai

四面拼多多已拿offer,分享一下1 2 3 4面试经过及面试题

Java架构之路

Java 程序员 架构 面试 编程语言

阿里五面(4轮技术+HR)成功逆袭,面经分享

Java架构之路

Java 程序员 架构 面试 编程语言

homework1

Geek_xq

产品经理训练营第五、六周作业

happy-黑皮

产品经理训练营

《企业级业务架构设计方法论与实践》解读

javaba韩老师

业务架构 TOGAF

产品训练营--第五期作业

曦语

产品训练营

滴普FastData系列-自动化数据集成服务DCT可编程调度容器设计

容器 数据传输 数据集成

产品经理训练营 Week7 作业

Mai

高承实:为什么稳定币难以稳定?

CECBC

商品货币

历时半个多月,支付宝3面+美团4面+拼多多5面,侥幸全获Offer!分享面经

Java架构之路

Java 程序员 架构 面试 编程语言

dubbo 源码 v2.7 分析:核心机制(二)

程序员架构进阶

架构 微服务 RPC 七日更 dubbo源码

首届腾讯云大数据峰会暨Techo TVP开发者峰会

首届腾讯云大数据峰会暨Techo TVP开发者峰会

Spark 1.6发布:引入Dataset接口_大数据_侠天_InfoQ精选文章