跳到主要内容

数仓工具对比

问题

常用的数仓工具有哪些?如何选型?

答案

主流工具概览

工具类型适用场景特点
Hive批处理引擎离线数仓稳定、生态好、SQL on Hadoop
Spark SQL批处理引擎大规模计算内存计算、比 Hive 快 10x
Flink SQL流处理引擎实时数仓真流式、低延迟
ClickHouseOLAP 引擎实时查询列式存储、极速聚合
Doris/StarRocksOLAP 引擎实时分析简单运维、兼容 MySQL
dbt数据转换工具ELT 模式SQL 模板、文档自动化
Presto/Trino查询引擎交互式查询跨数据源联邦查询

按场景选型

现代数据栈(Modern Data Stack)

环节传统方案现代方案
数据采集Sqoop / FlumeAirbyte / Fivetran
存储HDFS + HiveSnowflake / BigQuery / Databricks
转换Hive SQL + 调度dbt
调度Crontab / AzkabanAirflow / Dagster
BI自研Metabase / Looker
dbt 的核心价值
  • SQL 即代码:所有转换逻辑用 SQL 编写,版本控制(Git)
  • 自动文档:生成数据血缘图和表文档
  • 测试:内置数据质量测试(not_null、unique、ref integrity)
  • 复用:Jinja 模板 + Macro 实现 SQL 复用

常见面试问题

Q1: Hive 和 Spark SQL 有什么区别?

答案

对比HiveSpark SQL
执行引擎MapReduce(默认)Spark 内存计算
速度较慢快 10~100 倍
资源磁盘 IO需要大内存
小文件不友好可合并
适用超大规模、稳定性优先性能优先

现在 Hive 也可以用 Spark/Tez 作为执行引擎。

Q2: ClickHouse 和 Doris 怎么选?

答案

对比ClickHouseDoris/StarRocks
写入批量写入好,实时写入一般实时写入好
运维需要手动管理简单(自动分片)
JOIN大表 JOIN 性能差支持更复杂 JOIN
协议HTTP / Native兼容 MySQL 协议
生态成熟、社区大快速发展中

Q3: 什么是 dbt?为什么越来越火?

答案

  • dbt(data build tool)是数据转换工具,核心理念是 ELT(先 Load 后 Transform)
  • 和 ETL 工具的区别:dbt 只做 T(Transform),不做 E(Extract)和 L(Load)
  • 火的原因:
    1. SQL 工程师也能做数据建模(不需要 Java/Python)
    2. Git 版本控制 + 代码审查
    3. 自动生成文档和血缘
    4. 与云数仓(Snowflake、BigQuery)完美配合

相关链接