Spark SQL
当需要混合多个存储库或扫描数亿行数据时使用。可以用一条 SQL 连接 Aster TSDB、PostgreSQL 和 Iceberg(RustFS)。
| 项 | 值 |
|---|---|
| SQL 网关 | Kyuubi — 10000 (thrift) · 10099 (Web UI) |
| Spark Master | 7077, Master UI 4440 |
| Metastore | Hive Metastore 9083 |
| Iceberg 目录 | Gravitino REST 19001 |
| 账号 | PP_SPARK_USER / PP_SPARK_PASSWORD |
有启动成本
打开一个会话需要数秒。不要将短查询发送到这里 —— 这类查询使用 CQL 或 PostgreSQL 要快得多。
连接
beeline (通过 Kyuubi — 推荐)
docker exec -it plantpulse-datalake bash -c \
'/opt/kopens/plantpulse-platform/plantpulse-analytics/spark/bin/beeline \
-u "jdbc:hive2://127.0.0.1:10000/default" \
-n "$PP_SPARK_USER" -p "$PP_SPARK_PASSWORD"'
具备会话隔离和队列功能。DBeaver、Tableau 等外部 SQL 客户端也可使用相同的 JDBC URL 连接。
spark-sql (直接 — 用于调试)
docker exec -it plantpulse-datalake \
/opt/kopens/plantpulse-platform/plantpulse-analytics/spark/bin/spark-sql \
--master spark://127.0.0.1:7077
示例
查看目录与表
SHOW CATALOGS;
SHOW DATABASES;
SHOW TABLES IN default;
DESCRIBE TABLE default.tm_tag_point;
大规模聚合 — CQL 无法实现的操作
无分区键的全表扫描聚合在此进行。
SELECT tag_id, count(*) AS points, avg(value) AS avg_value
FROM tm_tag_point
WHERE timestamp >= '2026-07-01' AND timestamp < '2026-08-01'
GROUP BY tag_id
ORDER BY points DESC
LIMIT 50;
混合存储库进行连接
同时查看时序(Aster TSDB)和设备元数据(PostgreSQL)。
SELECT e.equipment_name,
count(*) AS points,
avg(p.value) AS avg_value
FROM tm_tag_point p
JOIN tm_equipment e ON e.equipment_id = p.equipment_id
WHERE p.timestamp >= '2026-07-01' AND p.timestamp < '2026-08-01'
GROUP BY e.equipment_name
ORDER BY points DESC;
归档(Iceberg)查询
已下沉到冷层的历史数据会保留为 Iceberg 表。
-- 스냅샷 이력
SELECT * FROM iceberg.pp.tm_tag_point.snapshots ORDER BY committed_at DESC LIMIT 10;
-- 특정 시점의 모습 (타임 트래블)
SELECT count(*) FROM iceberg.pp.tm_tag_point
TIMESTAMP AS OF '2026-07-01 00:00:00';
归档任务的状态可通过 pd retention 的 cold_tier · archive_job 行查看。
注意事项
- 🔴 对分层 Aster TSDB 表进行无分区键聚合时,请使用 Spark。 CQL 的全表扫描聚合不会合并块,会返回错误的值 (分层存储)。
- Master UI 端口为 4440 (不是 8080)。
PP_SPARK_PASSWORD用于 Kyuubi 连接认证,由hive-auth.properties生成。- 归档器(
plantpulse-warehouse-web)运行在数据湖之外,位于平台镜像中 → warehouse 模块。
相关文档
- plantpulse-analytics (分析层) — Spark · Hive · Gravitino · Kyuubi 配置
- 数据查询概览 — 三者中应选择哪个