选型

Spark

你可能会说

数据几千万行,同事说用 Spark,可我 Pandas 也能跑,区别在哪?

面向大规模数据的分布式计算引擎把计算拆成任务分发到多台机器,用内存缓存中间结果,支持批处理、SQL、流处理和机器学习。数据单机放得下时,它的调度和网络开销反而是负担。
也常被叫作Apache SparkSpark SQL
先问一句TB 级批处理/SQL?
默认Spark→擅长离线分析→别用单机小数据
成熟度采用

什么时候选它

  • 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 为什么慢?
    答:要落盘、跨网络传输并排序;数据倾斜时少数分区会拖垮整个作业。
延伸阅读 · 权威出处