星星之火渐呈燎原之势:Spark 2.0预览版重磅来袭

译文
开发 大数据 Spark
Apache Spark 2.0即将正式与广大用户见面。虽然目前其预览版只向Databricks云产品订阅用户开放,但考虑到Spark峰会即将于下个月召开,预计Apache Spark 2.0的全面降临也将为时不远。在1.x系列时代,Apache Spark的发展速度相当快,倾向于通过小版本更新推出各类新功能。而在首次大版本升级当中,我们相信Spark 2.0将带来真正具有突破性的变化与更加关键的新功能设计。

【51CTO.com快译】目前Databricks订阅用户已经能够获取Spark 2.0的技术预览版。性能提升、SparkSessions以及数据流处理能力将成为新版本的主要发展方向。

[[166984]]

Apache Spark 2.0即将正式与广大用户见面。虽然目前其预览版只向Databricks云产品订阅用户开放,但考虑到Spark峰会即将于下个月召开,预计Apache Spark 2.0的全面降临也将为时不远。在1.x系列时代,Apache Spark的发展速度相当快,倾向于通过小版本更新推出各类新功能。而在***大版本升级当中,我们相信Spark 2.0将带来真正具有突破性的变化与更加关键的新功能设计。

统一DataFrames与Datasets

这里要向大家强调新版本的一大变革:在Spark 1.6中,DataFrames与Datasets相互独立,但在2.0版本中DataFrames将成为Row类Dataset。

这一调整对于大多数用户可能并不重要,但作为类结构的重要变化,大家现在可以在Java及Scala应用当中将DataFrames作为compile-time类加以使用,并在DataFrames与Datasets中同时使用类方法(map,filter)与非类方法(select,groupBy)。

经过改进的全新SparkSession

在使用Spark时,我们往往会遇到这样一个问题:“我们已经有了SparkContext,SOLContext与HiveContext,那么什么情况下应该使用哪一种?”Spark 2.0引入了新的SparkSession对象,旨在减少这种困扰并提供一致性入口点。以下为SparkSession示例:

 

val sparkSession = SparkSession.builder

.master("local")

.appName("my-spark-app")

.config("spark.some.config.option", "config-value")

.getOrCreate()

 

如果大家使用REPL,那么设置Spark的过程中会自动生成SparkSession。希望读取DataFrame中的数据?方式如下:

spark.read. json ("JSON URL")

另外一大标志性调整,就是不再强调使用Spark弹性分布式数据集(简称RDD)的初始抽象,而是在底层SparkContext利用spark.sparkContext创建RDD。请注意,RDD仍然存在,只是***DataFrame模式的作法更为普遍。

对于已经全面采用SparkSOL并发现这款查询引擎有时候难以运用的朋友,Spark 2.0也带来了新的解决办法。新版本提供另一款SQL解析引擎,其能够支持子查询及大量SQL 2003功能(但并未宣布支持全部功能),这应该能让传统SQL应用更好地被移植到Spark当中。

Structured Streaming

Structured Streaming可能是此次发布的最令人激动的新功能。总体来讲,Apache Spark 2.0带来了新的流数据处理模式,由以往的RDD批处理机制转向无边界DataFrame概念。

这将使得某些场景下的数据流收集与更新更易于实现——同时允许时间列窗口存在于DataFrame本身而非立足于事件发生之时。作为令Spark Streaming长久以来逊于Apache Flink与Apache Beam的软肋所在,此次调整应该能让更多朋友乐于升级至2.0版本。

性能提升

Spark 2.0版本在运行速度与智能化水平方面下了一番功夫。Tungsten引擎已经采用源自编译器的字节码优化机制,旨在减少函数调用并保持处理过程中的CPU占用率。

Parquet支持能力也得到改进,某些用例下运行速度达到过去的十倍。另外,初次出现于Spark 1.6中且面向Java或Kryo的Encoder也得到系列化,得以继续在集群中降低内存使用量并提升数据吞吐能力。

ML/GraphX

如果大家关注Spark在机器学习与图形方面的改进,那么恐怕会有些失望。目前机器学习方面的spark.mllib库开发工作已经中止,大家需要转而在spar.ml中使用基于DataFrame的API。

Spark 2.0继续面向所有支持语言实现模型与机器学习流程,同时进一步为不熟悉Java或者 Scala的数据科学家提供面向Python及R语言的MLLib API。

在GraphX方面,Spark 2.0对其似乎不太重视。这里我建议大家关注GraphFrames。目前其属于主发行版之外的独立版本,以DataFrames为基础构建图形处理框架,且能够支持Java、Scala、Python与R语言。相信其将在Spark 3.0时代被纳入主版本当中。

一代新人换旧人

新版本除了引入新特性之外,也移除了部分可能造成问题的旧元素:

  • 不再支持Hadoop 2.2及更早版本
  • 移除Bagel图形库(即GraphX的前身)

另外需要注意的是,大家应当逐步放弃当前在SparkSQL中人气极高的registerTempTable,转而使用createTempView,其输出特点就是强调用户不再利用API调用使用数据。另外,预计新版本中还将有部分日志通知机制被弃用。

是否需要尽快升级?

必须承认,考虑到可观的性能提升与期待已久的Spark Streaming新功能,在未来几周内尽快升级到Apache Spark 2.0通用版本确实很有吸引力。

不过我之前遇到过匆忙升级而导致的麻烦,因此我个人打算等段时间,看看尝试在测试集群上运行新版本的朋友们是否会发现某些bug。

无论如何,Apache Spark 2.0带来了众多值得期待的元素,因此在确定一切安全后,升级无疑势在必行!

原文链接:Spark 2.0 prepares to catch fire

【51CTO.com独家译稿,合作站点转载请注明来源】

责任编辑:Ophira 来源: 51CTO.com
相关推荐

2014-07-02 13:55:17

Spark

2014-01-16 16:01:45

2013-07-11 16:21:52

PHP

2009-02-17 17:46:56

虚拟化Gartner服务器虚拟化

2018-04-12 17:32:18

红旗软件Linux人才培养

2019-04-08 14:48:28

马化腾互联网下沉

2013-11-05 10:23:00

行业移动医疗英特尔

2024-07-18 14:19:59

2022-04-25 12:55:55

低代码无代码开发

2023-01-05 08:52:42

OKR项目管理

2015-04-27 14:00:24

OpenStack开源云平台

2020-06-11 10:38:53

5G网络技术

2009-05-06 17:37:17

MoonlightSilverlightRIA

2021-01-20 10:34:04

5G5G网络5G终端

2020-09-11 14:31:04

华为HDC

2019-01-11 14:32:09

TensorFlow 机器之心谷歌

2021-01-12 22:35:34

边缘计算云计算开源

2009-03-11 14:00:31

点赞
收藏

51CTO技术栈公众号