Spark大数据商业实战三部曲:内核解密、商业案例、性能调优(第2版)
上QQ阅读APP看书,第一时间看更新

2.1 Spark 2.4综述

Spark 2.0中更新发布了新的流处理框架(Structured Streaming);对于API的更新,Spark 2.0版本API的更新主要包括DataFrame、DataSet、SparkSession、累加器API、Aggregator API等API的变动。

2.1.1 连续应用程序

自从Spark得到广泛使用以来,其流处理框架Spark Streaming也逐渐吸引到了很多用户,得益于其易用的高级API和一次性语义,使其成为使用最广泛的流处理框架之一。但是,我们不仅需要流处理来构建实时应用程序,很多时候我们的应用程序只有一部分需要用到流处理,对于这种应用程序,Databricks公司把它称为Continuous Application(实时响应数据的端到端的应用程序),也就是连续的应用程序。在Continuous Application中有许多难点,如数据交互的完整性、流数据与离线数据的结合使用、在线机器学习等。

Spark 2.0最重磅的更新是新的流处理框架——Structured Streaming。它允许用户使用DataFrame/DataSetAPI编写与离线批处理几乎相同的代码,便可以作用到流数据和静态数据上,引擎会自动增量化流数据计算,同时保证了数据处理的一致性,并且提供了和存储系统的事务集成。

2.1.2 新的API

在Spark 2.0版本的API中,共有如下几个API的变动。

(1)统一了DataFrame和DataSet。现在DataFrame不再是一个独立的类,而是作为DataSet[Row]的别名定义在org.apache.spark.sql这个包对象中。

sql\package.scala源码如下:

(2)加入了SparkSession,用于替换DataFrame和Dataset API的SQLContext和HiveContext(这两个API仍然可以使用)。

(3)为SparkSession和SparkSQL加入一个新的,精简的配置参数——RuntimeConfig,用来设置和获得与SparkSQL有关的Spark或者Hadoop设置。

SparkSession.scala源码如下:

(4)更简单、更高性能的累加器API。

(5)用于DataSet中类型化聚合的新的改进的Aggregator API。