中国领先的IT技术网站
|
|

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

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

作者:核子可乐译来源:51CTO.com|2016-05-31 10:21

开发者大赛路演 | 12月16日,技术创新,北京不见不散


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

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独家译稿,合作站点转载请注明来源】

【编辑推荐】

  1. 借助 Redis ,让 Spark 提速 45 倍!
  2. LinkedIn开源Dr. Elephant:Hadoop和Spark性能监控工具
  3. Spark与Storm注意:Apache Apex已然横空出世
  4. Spark Streaming 数据清理机制
  5. 为什么在大数据处理中Cassandra与Spark如此受欢迎?
【责任编辑:Ophira TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Linux指令速查手册

Linux是一款开源的操作系统,得到了广大开发者的青睐。掌握Linux系统的指令及其用法是学习Linux系统的基础。本书详细地介绍了常用Linux指令...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× 51CTO学院双十二活动