SQL面试题更新 2026-08-05

请说明在 Spark SQL 中采用 Parquet 格式进行数据存储的具体方法,并阐述该列式存储格式相比其他格式的显著优势。

数据性能优化技术原理Spark SQL

考察说明

考查候选人对 Spark SQL 中使用 Parquet 格式的实践能力和对其列式存储优势的理解。

回答思路

  1. 【回答框架 1】Parquet 是一种列式存储格式,Spark SQL 通过 DataFrameReader 和 DataFrameWriter 的 format('parquet') 方法即可读写,也支持将表数据以 Parquet 格式存储于 Hive 表。
  2. 【回答框架 2】列式存储的核心优势是查询时仅需读取涉及的列,大幅减少 I/O,尤其适合分析型查询和聚合操作。
  3. 【回答框架 3】Parquet 内置高效的压缩和编码,如 Snappy 压缩,且支持谓词下推和列剪枝,进一步优化查询性能。
  4. 【回答框架 4】Parquet 还支持复杂嵌套结构,与 Spark SQL 的强类型模式兼容,并可通过 Hive Metastore 或 Spark 的 schema 推断实现 schema 演化。
  5. 【关键点 1】Parquet 为列式存储,能有效减少 I/O 和提升查询性能。
  6. 【关键点 2】使用 DataFrameWriter.format('parquet').save() 或表级操作进行存储。
  7. 【关键点 3】优点包括高压缩率、支持谓词下推和列剪枝。
  8. 【关键点 4】适合 OLAP 场景,尤其处理宽表和大量列时的性能优势明显。
  9. 【易错点 1】不要将 Parquet 用于频繁的逐行更新或小文件写入,因为列式格式在写入小文件时效率低且易产生大量小文件问题。
  10. 【易错点 2】在 schema 不匹配时可能触发重写或报错,需注意 schema 一致性管理。