Spark 1.6.x的新特性
Spark-1.6是Spark-2.0之前的最后一个版本。主要是三个大方面的改进:性能提升,新的 Dataset API 和数据科学功能的扩展。这是社区开发非常重要的一个里程碑。
1. 性能提升
根据 Apache Spark 官方 2015 年 Spark Survey,有 91% 的用户想要提升 Spark 的性能。
Parquet 性能
自动化内存管理
流状态管理速度提升 10X

2. Dataset API
Spark 团队引入了 DataFrames,新型Dataset API。

3. 新的科学计算功能
机器学习管道持久性
新的算法和功能:
univariate and bivariate statistics
survival analysis
normal equation for least squares
bisecting K-Means clustering
online hypothesis testing
Latent Dirichlet Allocation (LDA) in ML Pipelines
R-like statistics for GLMs
feature interactions in R formula
instance weights for GLMs
univariate and bivariate statistics in DataFrames
LIBSVM data source
non-standard JSON data

Spark 1.5.x的新特性
1、DataFrame底层执行的性能优化(钨丝计划第一阶段)
1.1 Spark自己来管理内存,而不再依靠JVM管理内容。这样就可以避免JVM GC的性能开销,并且能够控制OOM的问题。
1.2 Java对象直接使用内部的二进制格式存储和计算,省去了序列化和反序列化的性能开销,而且更加节省内存开销。
1.3 完善了Shuffle阶段的UnsafeShuffleManager,增加了不少新功能,优化shuffle性能。
1.4 默认使用code-gen,使用cache-aware算法,加强了join、aggregation、shuffle、sorting的性能,增强了window function的性能,性能比1.4.x版本提高数倍

2、DataFrame
2.1 实现了新的聚合函数接口,AggregateFunction2,并且提供了7个新的内置聚合函数。
2.2 实现了100多个新的expression function,例如unix_timestamp等,增强了对NaN的处理
2.3 支持连接不同版本的hive metastore
2.4 支持Parquet 1.7

3、Spark Streaming:更完善的python支持、非实验的Kafka Direct API等等。

Spark 1.4.x的新特性
经过4个RC版本,Spark 1.4最终还是赶在Spark Summit前发布了,本文简单谈下本版本中那些非常重要的新feature和improvement.
SparkR就不细说了,于data scientists而言,简直是望眼欲穿,千呼万唤始出来........ 这显然要用单独一篇文章来说下 : )

Spark Core:
  现在大家最关心什么?性能和运维呀! 什么最影响性能?必须shuffle呀!什么是运维第一要务?必须是监控呀(就先不扯alert了)!1.4在这两点都做足了功夫。 1.4中,Spark为应用提供了REST API来获取各种信息(jobs / stages / tasks / storage info),使用这个API搭建个自己的监控简直是分分钟的事情,不止于此,DAG现在也能可视化了,不清楚Spark的DAGScheduler怎么运作的同学,现在也能非常轻易地知道DAG细节了。再来说说shuffle, 大家都知道,从1.2开始sort-based shuffle已经成为默认的shuffe策略了,基于sort的shuffle不需要同时打开很多文件,并且也能减少中间文件的生成,但是带来的问题是在JVM的heap中留了大量的java对象,1.4开始,shuffle的map阶段的输出会被序列化,这会带来两个好处:1、spill到磁盘上的文件变小了 2、GC效率大增 ,有人又会说,序列化反序列化会产生额外的cpu开销啊,事实上,shuffle过程往往都是IO密集型的操作,带来的这点cpu开销,是可以接受。
  大家期待的钨丝计划(Project Tungsten)也在1.4初露锋芒,引入了新的shuffle manager “UnsafeShuffleManager”, 来提供缓存友好的排序算法,及其它一些改进,目的是降低shuffle过程中的内存使用量,并且加速排序过程。 钨丝计划必定会成为接下来两个版本(1.5,1.6)重点关注的地方。

Spark Streaming:
  Streaming在这个版本中增加了新的UI, 简直是Streaming用户的福音啊,各种详细信息尽收眼底。话说Spark中国峰会,TD当时坐我旁边review这部分的code,悄悄对说我”this is awesome”。对了,这部分主要是由朱诗雄做的,虽然诗雄在峰会上放了我鸽子,但必须感谢他给我们带来了这么好的特性!另外此版本也支持了0.8.2.x的Kafka版本。

Spark SQL(DataFrame)
  支持老牌的ORCFile了,虽然比Parquet年轻,但是人家bug少啊 : ) 1.4提供了类似于Hive中的window function,还是比较实用的。本次对于join的优化还是比较给力的,特别是针对那种比较大的join,大家可以体会下。JDBC Server的用户肯定非常开心了,因为终于有UI可以看了呀。

Spark ML/MLlib
  ML pipelines从alpha毕业了,大家对于ML pipelines的热情还真的蛮高的啊。我对Personalized PageRank with GraphX倒是蛮感兴趣的,与之相关的是recommendAll in matrix factorization model。 事实上大多数公司还是会在Spark上实现自己的算法。

Spark 1.3新特性
Spark SQL脱离Alpha版本
在1.3版本中,Spark SQL正式脱离Alpha版本,提供了更好的SQL标准兼容。同时,Spark SQL数据源API亦实现了与新组件DataFrame的交互,允许用户直接通过Hive表格、Parquet文件以及一些其他数据源生成DataFrame。用户可以在同一个数据集上混合使用SQL和data frame操作符。新版本提供了从JDBC读写表格的能力,可以更原生地支持Postgres、MySQL及其他RDBMS系统。同时,该API还为JDBC(或者其他方式)连接的数据源生成输出表格提供写入支持。

内置支持Spark Packages
在2014年底,我们着手为Spark建立一个新的社区项目目录站点——Spark Packages。当下,Spark Packages已经包含了开发者可以使用的45个社区项目,包括数据源集成、测试工具以及教程。为了更方便Spark用户使用,在Spark 1.3中,用户可以直接将已发布包导入Spark shell(或者拥有独立flag的程序中)。
Spark Packages 还为开发者建立了一个SBT插件来简化包的发布,并为发布包提供了自动地兼容性检查。

在Spark Streaming中提供了更低等级的Kafka支持
从过去发布的几个版本来看,Kafka已经成为Spark Streaming一个非常人气的输入源。Spark 1.3引入了一个新的Kakfa streaming source,它利用了Kafka的回放能力,在非预写日志配置下提供了一个更可靠的交付语义。同时,针对那些需求强一致性的应用程序,它还提供了实现了Exactly-Once Guarantees的原语。在Kafka的支持上,1.3版本还添加了一个Python API以及支持这个API的原语。

MLlib中的新算法
Spark 1.3还提供了大量的新算法。其中,Latent Dirichlet Allocation(LDA)成为了第一个出现在MLlib中的主题建模算法。在这之前,Spark的逻辑回归已经通过多元逻辑回归(multinomial logistic regression )支持多类分类(multiclass classification)。而在这个版本中,聚类再次被提升,Gaussian Mixture Models和 Power Iteration Clustering被引入。并通过FP-growth扩展了频繁项集挖掘(FIM,Frequent Itemsets Mining)。最后,MLlib还为Distributed Linear Algebra引入了有效的块矩阵抽象。

一篇文章看懂spark 1.3+各版本特性的更多相关文章

  1. 一篇文章看懂JS闭包,都要2020年了,你怎么能还不懂闭包?

     壹 ❀ 引 我觉得每一位JavaScript工作者都无法避免与闭包打交道,就算在实际开发中不使用但面试中被问及也是常态了.就我而言对于闭包的理解仅止步于一些概念,看到相关代码我知道这是个闭包,但闭包 ...

  2. 一篇文章看懂angularjs component组件

     壹 ❀ 引 我在 angularjs 一篇文章看懂自定义指令directive 一文中详细介绍了directive基本用法与完整属性介绍.directive是个很神奇的存在,你可以不设置templa ...

  3. angularjs 一篇文章看懂自定义指令directive

     壹 ❀ 引 在angularjs开发中,指令的使用是无处无在的,我们习惯使用指令来拓展HTML:那么如何理解指令呢,你可以把它理解成在DOM元素上运行的函数,它可以帮助我们拓展DOM元素的功能.比如 ...

  4. 一篇文章看懂JS执行上下文

     壹 ❀ 引 我们都知道,JS代码的执行顺序总是与代码先后顺序有所差异,当先抛开异步问题你会发现就算是同步代码,它的执行也与你的预期不一致,比如: function f1() { console.lo ...

  5. rabbitMQ教程(二)一篇文章看懂rabbitMQ

    一.rabbitMQ是什么: RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上. 学过websocket的来理解rabbitMQ应该是 ...

  6. 一篇文章看懂Java并发和线程安全

    一.前言 长久以来,一直想剖析一下Java线程安全的本质,但是苦于有些微观的点想不明白,便搁置了下来,前段时间慢慢想明白了,便把所有的点串联起来,趁着思路清晰,整理成这样一篇文章. 二.导读 1.为什 ...

  7. rabbitMQ教程(三)一篇文章看懂rabbitMQ

    一.rabbitMQ是什么: RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上. 学过websocket的来理解rabbitMQ应该是 ...

  8. 一篇文章看懂Facebook和新浪微博的智能FEED

    本文来自网易云社区 作者:孙镍波 众所周知,新浪微博的首页动态流不像微信朋友圈是按照时间顺序排列的,而是按照一种所谓的"智能排序"的方式.这种违背了用户习惯的排序方式一直被用户骂, ...

  9. 一篇文章看懂iOS代码块Block

    block.png iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量.作为参数.作为返 ...

随机推荐

  1. 解决UITableViewCell左侧分割线有空白的问题

    ios7中,UITableViewCell左侧会有默认15像素的空白.设置setSeparatorInset:UIEdgeInsetsZero 能将空白去掉. ios8中,setSeparatorIn ...

  2. JQuery 点击控件获取当前坐标时不兼容IE7

    现在要求在点击文本框时,获取文本框的坐标,需要相对文本框的位置来显示信息. 思路就是,绑定文本框的click 事件,一旦有点击就触发,去调用clickevent 函数执行计算. $('#txt_m') ...

  3. bootstrap学习--模态弹出框modals轮子

    1.点击按钮型 <link rel="stylesheet" href="lib/bootstrap/css/bootstrap.min.css"> ...

  4. Chrome rem bug

    遇到一个bug,发现chrome在初始化页面的时候,会错误的渲染rem单位,导致字体过大. 比如: 正常的应该是这样的: 原因是,为了使用rem单位,我们常常将 html 的font-size设置为6 ...

  5. 移动端版本兼容js

    移动端版本兼容js <!--移动端版本兼容 --> <script type="text/javascript"> var phoneWidth = par ...

  6. php之图片处理类缩略图加水印

    用到两个image系统函数 imagecopymerge — 拷贝并合并图像的一部分 imagecopyresampled — 重采样拷贝部分图像并调整大小 /* 如何知道图片的大小和类型 无法确认调 ...

  7. nginx——location 优先级

    一. location 的匹配符1.等于匹配符:=等于匹配符就是等号,特点可以概括为两点:精确匹配不支持正则表达式2.空匹配符空匹配符的特点是:匹配以指定模式开始的 URI不支持正则表达式3.正则匹配 ...

  8. BZOJ 1483 梦幻布丁

    Description \(N\)个布丁摆成一行,进行\(M\)次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为\(1,2,2,1\)的四个布丁一共有\ ...

  9. Tautology

    WFF 'N PROOF is a logic game played with dice. Each die has six faces representing some subset of th ...

  10. android之apk自动更新解析包失败问题

    在apk自动更新(相关问题可以看我的博客http://blog.csdn.net/caicongyang) 从服务器下载完成后,点击notification提示安装时,每次都报解析包失败错误!首先我想 ...