spark 知识点
时间: 2025-05-19 08:12:09 浏览: 30
### Spark核心技术知识点总结
#### 1. **Spark概述**
Spark 是一种高性能的分布式计算框架,主要用于大规模数据集上的快速计算。与 Hadoop 不同的是,Spark 提供了一个统一的计算引擎,支持批处理、流处理以及交互式查询等多种场景[^1]。
#### 2. **Spark架构组成**
- **核心模块**: Spark Core 是整个 Spark 生态的基础组件,提供了任务调度、内存管理和错误恢复等功能。
- **计算模块**:
- **Spark SQL**: 支持结构化数据的处理和分析,允许通过 SQL 或 DataFrame API 进行操作[^4]。
- **Spark Streaming**: 实现低延迟的流式数据处理功能,能够对接多种消息队列系统(如 Kafka 和 Flume)[^3]。
- **MLlib**: 提供机器学习算法库,适用于大规模数据分析和建模。
- **GraphX**: 面向图计算的应用程序设计,适合社交网络分析等领域。
- **存储层**: Spark 自身并不提供分布式文件系统的实现,通常依赖于外部存储系统(如 HDFS),但在运行过程中可以通过缓存机制将中间结果保存在内存中以提升性能[^2]。
#### 3. **RDD (Resilient Distributed Dataset)**
这是 Spark 中最基本的数据抽象形式,表示不可变的分区记录集合。主要特点如下:
- 容错性:自动重新计算丢失的部分。
- 缓存能力:可以显式调用 `persist()` 方法来决定如何缓存 RDD 数据(磁盘/内存等)。如果希望强制写入硬盘作为检查点,则需单独设置逻辑并配合 checkpoint 功能完成[^5]。
#### 4. **DAG Scheduler**
有别于传统 MapReduce 的两阶段作业划分方式,Spark 使用 DAG(Directed Acyclic Graph)调度器动态规划复杂的多步转换流程,在减少不必要的 I/O 开销方面表现优异。
#### 5. **部署模式**
支持本地单机测试环境(`local`)外加集群环境下多种管理模式的选择,例如独立版 Standalone Cluster Manager 或者集成现有资源管理系统像 Apache Mesos/YARN 来分配节点资源给各个应用实例使用[^2]。
```scala
// 示例代码展示如何创建一个简单的 Spark 应用程序连接 MySQL 数据源
import java.util.Properties
object MysqlConnector {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.appName("Mysql Connector Example")
.config("spark.master", "local[*]")
.getOrCreate()
val jdbcUrl = "jdbc:mysql://localhost:3306/testdb"
val connectionProperties = new Properties()
connectionProperties.put("user", "root")
connectionProperties.put("password", "")
// Read data from a MySQL table named 'employees'
val df = spark.read.jdbc(jdbcUrl, "employees", connectionProperties)
df.show()
spark.stop()
}
}
```
---
问题
阅读全文
相关推荐
















