Spark SQL
複数のストレージを混ぜたり、数億行をスキャンする必要があるときに使います。Aster TSDB・PostgreSQL・ Iceberg (RustFS) を1つのSQLでジョインできます。
| 項目 | 値 |
|---|---|
| SQLゲートウェイ | Kyuubi — 10000 (thrift) ・ 10099 (Web UI) |
| Sparkマスター | 7077、マスターUI 4440 |
| メタストア | Hive Metastore 9083 |
| Icebergカタログ | Gravitino REST 19001 |
| アカウント | PP_SPARK_USER / PP_SPARK_PASSWORD |
起動コストがあります
セッションを1つ開くのに数秒かかります。短いクエリはここに送らないでください — そういったものは 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の 全体スキャン集計はチャンクをマージしないため、誤った値が返ります (階層型ストレージ)。
- マスターUIは 4440 です (8080ではありません)。
PP_SPARK_PASSWORDは Kyuubi 接続認証に使用され、hive-auth.propertiesが作成します。- アーカイバー (
plantpulse-warehouse-web) は データレイクの外、プラットフォームイメージで動作します → warehouseモジュール。
関連項目
- plantpulse-analytics (分析レイヤー) — Spark・Hive・Gravitino・Kyuubi構成
- データクエリ概要 — 3つのうちどれを使うか