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. 设置 textField.placeholder的颜色和大小

    textField.placeholder = @"请输入手机号码"; [textField setValue:[UIColor blue] forKeyPath:@"_ ...

  2. Session技术详解

    1.session简介 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务器程 ...

  3. WPF里面的常用笔刷

    程序运行效果 <Window x:Class="This_brush.MainWindow" xmlns="http://schemas.microsoft.com ...

  4. NOIP2012 借教室 Splay初探

    终于把区间操作的Splay搞明白了…… Splay的大致框架是这样的: [代码中的Zig-Zig和Zig-Zag操作其实是可以优化的,实际只需要3次passDown和3次update] templat ...

  5. 复制JAVABEAN中的属性到另外一个JAVABEAN中

    下午写了一个属性复制方法,记录如下: class POUtil{ /** * * Function : 将一个source中的属性到复制到dest * @author : Liaokailin * C ...

  6. clipboard.js IE下 不允许复制时, 问题修改

    问题描述:https://github.com/zenorocha/clipboard.js/wiki/Known-IssuesOn IE9-11 there's a prompt that asks ...

  7. centos中文乱码修改字符编码使用centos支持中文

    如何你的centos显示中文乱码,只要修改字符编码使centos支持中文就可以了,没有这个文件可以创建它,下面是修改步骤 一.中文支持 安装中文语言包: 复制代码 代码如下: yum groupins ...

  8. linux 监控服务器脚本

    #!/bin/bash ctime=`date +%x%T`monitor_dir=/home/jk/if [ ! -d $monitor_dir ]; then    mkdir $monitor_ ...

  9. Oracle数据库之动态SQL

    Oracle数据库之动态SQL 1. 静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:一种为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大 ...

  10. 如何使rdlc报表的表头在每一页都显示

    想要使表格的表头在每一行都显示,直接在表格的属性设置界面中设置是无效的,应该算是一个BUG,如图: 但还是可以实现的,实现方法如下,这个实现方法从网上得到 开发工具: Visual Studio 20 ...