Spark是一个通用的大数据分析引擎,具有高性能、易用性和普遍性等特点。
架构
使用场景
离线ETL
离线ETL主要应用于数据仓库,对大规模的数据进行抽取(Extract)、转换(Transform)和加载(Load),其特点是数据量大,耗时较长,通常设置为定时任务执行。
在线数据分析(OLAP)
在线数据分析主要应用于BI(Business Intelligence)。分析人员交互式地提交查询作业,Spark可以快速地返回结果。除了Spark,常见的OLAP引擎包括Presto和Impala等。Spark 3.0的主要特性在EMR中的Spark 2.4版本已支持,更多特性详情请参见Spark SQL Guide。
流计算
流计算主要应用于实时大屏、实时风控、实时推荐和实时报警监控等。流计算主要包括Spark Streaming和Flink引擎,Spark Streaming提供DStream和Structured Streaming两种接口,Structured Streaming和Dataframe用法类似,门槛较低。Flink适合低延迟场景,而Spark Streaming更适合高吞吐的场景,详情请参见Structured Streaming Programming Guide。
机器学习
Spark的MLlib提供了较丰富的机器学习库,包括分类、回归、协同过滤、聚合,同时提供了模型选择、自动调参和交叉验证等工具来提高生产力。MLlib主要支持非深度学习的算法模块,详情请参见Machine Learning Library (MLlib) Guide。
图计算
Spark的GraphX支持图计算的库,支持丰富的图计算的算子,包括属性算子、结构算子、Join算子和邻居聚合等。详情请参见GraphX Programming Guide。