一篇文章看懂spark 1.3+各版本特性

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引入了有效的块矩阵抽象。

时间: 2024-10-13 22:14:09

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

(好文推荐)一篇文章看懂JavaScript作用域链

闭包和作用域链是JavaScript中比较重要的概念,首先,看看几段简单的代码. 代码1: 1 var name = "stephenchan"; 2 var age = 23; 3 function myFunc() { 4 alert(name); 5 var name = "endlesscode"; 6 alert(name); 7 alert(age); 8 alert(weight); 9 } 10 myFunc(); 11 myFunc(); 上述代码

一篇文章看懂Android学习最佳路线

为什么中高级Android程序员不多呢?这是一个问题,我不好回答,但是我想写一篇文章来描述下Android的学习路线,期望可以帮助更多的Android程序员提升自己. 作者:来源:Android开发中文站|2015-11-12 10:40 收藏 分享 前言 看到一篇文章中提到"最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺",这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不容易,一般需要进行大量的面试才

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

 壹 ? 引 在angularjs开发中,指令的使用是无处无在的,我们习惯使用指令来拓展HTML:那么如何理解指令呢,你可以把它理解成在DOM元素上运行的函数,它可以帮助我们拓展DOM元素的功能.比如最常用ng-click可以让一个元素能监听click事件,这里你可能就有疑问了,同样都是监听为什么不直接使用click事件呢,angular提供的事件指令与传统指令有什么区别?我们来看一个例子: <body ng-controller="myCtrl as vm"> <d

小程序社交立减金正式开放!一篇文章看懂它

2018微信公开课PRO现场,微信小程序团队宣布,小程序立减金能力正式上线. 什么是社交立减金? 这是一款能够帮助商家快速获取社交.裂变传播属性的小程序经营工具--商家应用了这一能力后,用户通过支付.扫码等场景就能参与社交立减金的活动,将社交立减金礼包分享出去,就能获得一份立减金. 如何领取社交立减金? 1.用户在门店用微信支付消费后,可通过收到的模板消息领取立减金: 2.点击"邀请好友一起领取",让更多好友参与进来: 3.下次使用微信支付后,可以直接抵扣立减金. 社交立减金营销效果如

一篇文章看懂iOS代码块Block

iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量.作为参数.作为返回值,特殊地,Block还可以保存一段代码,在需要的时候调用,目前Block已经广泛应用于iOS开发中,常用于GCD.动画.排序及各类回调 注: Block的声明与赋值只是保存了一段代码段,必须调用才能执行内部代码 Block变量的声明.赋值与调用 Block变量的声明 Block变量的声明格式为: 返回值类型(^Bl

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

一.前言 长久以来,一直想剖析一下Java线程安全的本质,但是苦于有些微观的点想不明白,便搁置了下来,前段时间慢慢想明白了,便把所有的点串联起来,趁着思路清晰,整理成这样一篇文章. 二.导读 1.为什么有多线程? 2.线程安全描述的本质问题是什么? 3.Java内存模型(JMM)数据可见性问题.指令重排序.内存屏障 三.揭晓答案 1.为什么有多线程 谈到多线程,我们很容易与高性能画上等号,但是并非如此,举个简单的例子,从1加到100,用四个线程计算不一定比一个线程来得快.因为线程的创建和上下文切

微信小程序社交立减金正式开放!一篇文章看懂它(开通微信免充值代金券)

2018微信公开课PRO现场,微信小程序团队宣布,小程序立减金能力正式上线. 什么是社交立减金? 这是一款能够帮助商家快速获取社交.裂变传播属性的小程序经营工具--商家应用了这一能力后,用户通过支付.扫码等场景就能参与社交立减金的活动,将社交立减金礼包分享出去,就能获得一份立减金. 如何领取社交立减金? 1.用户在门店用微信支付消费后,可通过收到的模板消息领取立减金: 2.点击"邀请好友一起领取",让更多好友参与进来: 3.下次使用微信支付后,可以直接抵扣立减金. 社交立减金营销效果如

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

 壹 ? 引 我们都知道,JS代码的执行顺序总是与代码先后顺序有所差异,当先抛开异步问题你会发现就算是同步代码,它的执行也与你的预期不一致,比如: function f1() { console.log('听风是风'); }; f1(); //echo function f1() { console.log('echo'); }; f1(); //echo 按照代码书写顺序,应该先输出 听风是风,再输出 echo才对,很遗憾,两次输出均为 echo:如果我们将上述代码中的函数声明改为函数表达式,

一篇文章看懂物体检测的发展脉络 转

转 https://zhuanlan.zhihu.com/p/28399320 第一,什么是物体检测,如何去评价一个物体里系统的好坏. 第二,物体检测整个的框架是怎么样的?它一般包含了图像的分类和物体检测的定位. 第三,介绍物体检测的历史发展,从传统的人工设计的一些图像特征加上分类器到现在的深度学习. ▼ What's Computer Vision 介绍物体检测之前,我们首先要知道什么是计算机视觉.计算机视觉是计算机科学的一个分支领域,旨在构造智能算法和程序,来"观察"这个世界.比如