Spark 1.6发布:引入Dataset接口
今天,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))。
\\
Spark 1.6发布:引入Dataset接口相关推荐
- python写spark的效率问题_“大数据架构”Spark 3.0发布,重大变化,性能提升18倍...
我们激动地宣布,作为Databricks运行时7.0的一部分,可以在Databricks上使用Apache SparkTM 3.0.0版本.3.0.0版本包含超过3400个补丁,是开源社区做出巨大贡献 ...
- Spark性能优化 -- Spark SQL、DataFrame、Dataset
本文将详细分析和总结Spark SQL及其DataFrame.Dataset的相关原理和优化过程. Spark SQL简介 Spark SQL是Spark中 具有 大规模关系查询的结构化数据处理 模块 ...
- 大数据入门:Spark RDD、DataFrame、DataSet
在Spark的学习当中,RDD.DataFrame.DataSet可以说都是需要着重理解的专业名词概念.尤其是在涉及到数据结构的部分,理解清楚这三者的共性与区别,非常有必要.今天的大数据入门分享,我们 ...
- Apache Spark 1.5发布,新特性一览
Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一.Apache Spa ...
- Spark 1.2 发布,开源集群计算系统
2019独角兽企业重金招聘Python工程师标准>>> Spark 1.2 发布,此版本包括 172 位贡献者和超过 1000 个 commits. 此版本包括 Spark 核心操作 ...
- python文件路径过滤器_SUMO入门(八) - 从Python引入TraCI接口
SUMO入门(八) - 从Python引入TraCI接口 TraCI TraCI/Interfacing TraCI from Python TraCI命令分为13个部分,它们对应于各个模块: gui ...
- 微信团队回应“部分用户朋友圈无法刷新”;罗永浩:准备做综艺节目;Apache Spark 3.0 发布| 极客头条...
整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...
- java使用axis调用.net发布的webservice接口返回对象类型
本人在java中axis-1.4 调用 .net发布的webService接口 有问题欢迎各路大神讨论 !!! 1.1 基本类型 1.2 对象类型 1.3复杂对象类型(对象类中嵌套对象类) 返回基本类 ...
- 淘宝店铺发布API接口(新),淘宝oAuth2.0店铺商品API接口,淘宝商品发布API接口,淘宝商品上架API接口,一整套发布上架店铺接口对接分享
淘宝店铺发布API接口(新),淘宝oAuth2.0店铺商品API接口,淘宝商品发布API接口,淘宝商品上架API接口,一整套发布上架店铺接口对接分享如下 1.公共参数 名称 类型 必须 描述 key ...
最新文章
- IEEE发布2022年科技趋势全球调研:人工智能和机器学习、云计算及5G将成为下一年最重要的技术...
- 主从表 ajax,DWZ主从表结构 · Issue #72 · OtakuFly/dwz · GitHub
- [MySQL实践] 实践记录
- linux kernel 进程管理,Linux内核 | 进程管理
- 2020.3.10.遗留问题
- linux tao环境 安装_Linux安装jdk8及环境变量配置
- java定义一个方法,返回整数数组的元素最大值
- 墨天轮2022年新春发布会暨年度数据库颁奖盛典即将开启!
- matlab中关于统计的函数
- 微博中的长链接与短链接
- 密码学笔记—栅栏密码
- VS2013注册串口active控件mscomm32.ocx
- 2018第九届蓝桥杯国赛C组_java
- OpenCV4机器学习(一):OpenCV4+VS2017环境搭建与配置
- 解决App自动化的不稳定因素-弹框及首页启动加载完成判断处理
- android 通知权限设置在哪,Android 打开消息通知权限
- 如何求1^k+2^k+...+n^k
- `CSS filter` 有哪些神奇用途
- 好记性不如烂笔头之Java基础复习笔记
- 基于容器制作镜像(apache)