今天,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接口相关推荐

  1. python写spark的效率问题_“大数据架构”Spark 3.0发布,重大变化,性能提升18倍...

    我们激动地宣布,作为Databricks运行时7.0的一部分,可以在Databricks上使用Apache SparkTM 3.0.0版本.3.0.0版本包含超过3400个补丁,是开源社区做出巨大贡献 ...

  2. Spark性能优化 -- Spark SQL、DataFrame、Dataset

    本文将详细分析和总结Spark SQL及其DataFrame.Dataset的相关原理和优化过程. Spark SQL简介 Spark SQL是Spark中 具有 大规模关系查询的结构化数据处理 模块 ...

  3. 大数据入门:Spark RDD、DataFrame、DataSet

    在Spark的学习当中,RDD.DataFrame.DataSet可以说都是需要着重理解的专业名词概念.尤其是在涉及到数据结构的部分,理解清楚这三者的共性与区别,非常有必要.今天的大数据入门分享,我们 ...

  4. Apache Spark 1.5发布,新特性一览

    Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一.Apache Spa ...

  5. Spark 1.2 发布,开源集群计算系统

    2019独角兽企业重金招聘Python工程师标准>>> Spark 1.2 发布,此版本包括 172 位贡献者和超过 1000 个 commits. 此版本包括 Spark 核心操作 ...

  6. python文件路径过滤器_SUMO入门(八) - 从Python引入TraCI接口

    SUMO入门(八) - 从Python引入TraCI接口 TraCI TraCI/Interfacing TraCI from Python TraCI命令分为13个部分,它们对应于各个模块: gui ...

  7. 微信团队回应“部分用户朋友圈无法刷新”;罗永浩:准备做综艺节目;Apache Spark 3.0 发布| 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...

  8. java使用axis调用.net发布的webservice接口返回对象类型

    本人在java中axis-1.4 调用 .net发布的webService接口 有问题欢迎各路大神讨论 !!! 1.1 基本类型 1.2 对象类型 1.3复杂对象类型(对象类中嵌套对象类) 返回基本类 ...

  9. 淘宝店铺发布API接口(新),淘宝oAuth2.0店铺商品API接口,淘宝商品发布API接口,淘宝商品上架API接口,一整套发布上架店铺接口对接分享

    淘宝店铺发布API接口(新),淘宝oAuth2.0店铺商品API接口,淘宝商品发布API接口,淘宝商品上架API接口,一整套发布上架店铺接口对接分享如下 1.公共参数 名称 类型 必须 描述 key ...

最新文章

  1. IEEE发布2022年科技趋势全球调研:人工智能和机器学习、云计算及5G将成为下一年最重要的技术...
  2. 主从表 ajax,DWZ主从表结构 · Issue #72 · OtakuFly/dwz · GitHub
  3. [MySQL实践] 实践记录
  4. linux kernel 进程管理,Linux内核 | 进程管理
  5. 2020.3.10.遗留问题
  6. linux tao环境 安装_Linux安装jdk8及环境变量配置
  7. java定义一个方法,返回整数数组的元素最大值
  8. 墨天轮2022年新春发布会暨年度数据库颁奖盛典即将开启!
  9. matlab中关于统计的函数
  10. 微博中的长链接与短链接
  11. 密码学笔记—栅栏密码
  12. VS2013注册串口active控件mscomm32.ocx
  13. 2018第九届蓝桥杯国赛C组_java
  14. OpenCV4机器学习(一):OpenCV4+VS2017环境搭建与配置
  15. 解决App自动化的不稳定因素-弹框及首页启动加载完成判断处理
  16. android 通知权限设置在哪,Android 打开消息通知权限
  17. 如何求1^k+2^k+...+n^k
  18. `CSS filter` 有哪些神奇用途
  19. 好记性不如烂笔头之Java基础复习笔记
  20. 基于容器制作镜像(apache)

热门文章

  1. [正能量系列]赋闲的程序员(三)
  2. 向窗体中拖放图片并显示
  3. VUE 笔记(持续更新中...)
  4. 数据中心未来会被以太网交换器商用IC占领吗?
  5. [log.js]一个node端带文件路径和颜色的console.log
  6. 《kafka中文手册》- 构架设计(一)
  7. .NET程序的性能要领和优化建议
  8. DHCP服务器的搭建与维护
  9. Android NDK 简单介绍、工具安装、环境配置
  10. 我的第一篇Windows Live Writer小文