メインコンテンツまでスキップ

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モジュール。

関連項目​