Spark 是大数据开发的必会技能。面试中经常被问到的问题就是 Spark 是什么,或者请介绍一下
Spark,今天的文章主要对这个问题做出讲解。很多人的回答都不够准确,这个问题最为准确的描述可以在官网寻找。
<>1.整体介绍
打开官网可以看到一行醒目的表与:
Unified engine for large-scale data analytics
翻译一下就是:用于大规模数据分析的统一引擎。继续往下看:
What is Apache Spark™?
Apache Spark™ is a multi-language engine for executing data engineering, data
science, and machine learning on single-node machines or clusters.
这里对我们的问题做出了回答:Apache Spark™ 是一种多语言引擎,用于在单节点机器或集群上执行数据工程、数据科学和机器学习。
归纳一下要点:Spark 是一个计算引擎,用于大规模数据的计算,支持多种编程语言。
<>2.特征
上面给出的是一个总体的描述,对于更加具体的一些特征的介绍,官网也做出了回答:
Key features
Simple. Fast. Scalable. Unified.
Spark的特征用四个词语概括就是:简单、速度快、可扩展、统一性。更加具体的描述官网也给出了说明:
Batch/streaming data
Unify the processing of your data in batches and real-time streaming, using
your preferred language: Python, SQL, Scala, Java or R.
批处理/流处理:可以使用 Python、SQL、Scala、Java 或 R,通过批量处理和实时流式处理的方式统一处理数据。
SQL analytics
Execute fast, distributed ANSI SQL queries for dashboarding and ad-hoc
reporting. Runs faster than most data warehouses.
SQL 分析:为仪表板和临时报告执行快速、分布式的 ANSI SQL 查询。比大多数数据仓库运行得更快。
Data science at scale
Perform Exploratory Data Analysis (EDA) on petabyte-scale data without having
to resort to downsampling
大规模数据科学:对 PB 级数进行探索性数据分析 (EDA),而无需进行下采样
Machine learning
Train machine learning algorithms on a laptop and use the same code to scale
to fault-tolerant clusters of thousands of machines.
机器学习:在笔记本电脑上训练机器学习算法,并使用相同的代码扩展到数千台机器的容错集群。
<>3.生态
Apache Spark™ integrates with your favorite frameworks, helping to scale them
to thousands of machines.
Data science and Machine learning
SQL analytics and BI
Storage and Infrastructure
Spark 整合了多种框架,能够将这些框架扩展到数千台机器。这些框架包括:
* 数据科学和机器学习:scikit-learn,pandas,TensorFlow,PyTorch,mlflow,R
* SQL 分析和 BI:Superset,Power BI,Looker,redash,tableau,dbt
* 存储和基础设施:Elasticsearch,MongoDB,Kafka,delta
lake,kubernetes,Airflow,Parquet,SQL Server,cassandra,orc
<>4.核心模块
Spark Core:提供了 Spark 最基础与最核心的功能,Spark 其他的功能如:Spark SQL,Spark
Streaming,GraphX,MLlib 都是在Spark Core 的基础上进行扩展的。
Spark SQL:Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用 SQL 或者 Apache Hive 版本的 SQL
方言(HQL)来查询数据。
Spark Streaming:Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的 API。
Spark MLlib:MLlib 是 Spark 提供的一个机器学习算法库。MLlib
不仅提供了模型评估、数据导入等额外的功能,还提供了一些更底层的机器学习原语。
Spark GraphX:GraphX 是 Spark 面向图计算提供的框架与算法库。
<>5.总结
文章的最后对 Spark 是什么这个问题做一个总结:
* Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。
* Spark Core 中提供了 Spark 最基础与最核心的功能。
* Spark SQL 是 Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用 SQL 或者 Apache Hive 版本的
SQL 方言(HQL)来查询数据。
* Spark Streaming 是 Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的 API。