Spark
你可能会说
数据几千万行,同事说用 Spark,可我 Pandas 也能跑,区别在哪?
面向大规模数据的分布式计算引擎把计算拆成任务分发到多台机器,用内存缓存中间结果,支持批处理、SQL、流处理和机器学习。数据单机放得下时,它的调度和网络开销反而是负担。
也常被叫作Apache SparkSpark SQL
什么时候选它
- TB 级以上离线批处理、ETL
- 用 SQL 做大规模分析(Spark SQL)
- 机器学习特征工程(MLlib)跑在大数据上
- 需要和 HDFS、对象存储、数据湖打通
什么时候别选
- 几十万行的分析:DuckDB / Pandas / 单机数据库更快更省
- 毫秒级实时计算:用 Flink 等流处理,或先降低需求
- 团队没有集群和调优经验:shuffle、数据倾斜会很痛
容易混在一起 · 怎么分
Spark≠Hadoop MapReduce
Spark 用 DAG + 内存缓存减少落盘,迭代计算快;MapReduce 每一步都落盘。
Spark≠Flink
Spark 以批为主、微批流;Flink 原生流处理,延迟更低。
Spark≠数据库
它是计算引擎,存储仍在 HDFS、对象存储或数仓里。
Q面试会问什么
- 问:RDD 是什么?
答:弹性分布式数据集,不可变、可分区、可重算;靠血缘记录容错。 - 问:宽依赖和窄依赖?
答:窄依赖一个父分区只对应一个子分区,可流水线执行;宽依赖要 shuffle,跨节点重分布,代价大。 - 问:shuffle 为什么慢?
答:要落盘、跨网络传输并排序;数据倾斜时少数分区会拖垮整个作业。
延伸阅读 · 权威出处