Zum Hauptinhalt springen

Spark SQL

Diese Funktion wird verwendet, wenn Sie mehrere Speicherorte mischen oder Hunderte Millionen Zeilen durchsuchen müssen. Sie können Aster TSDB · PostgreSQL · Iceberg (RustFS) in einer einzigen SQL-Abfrage verbinden.

ElementWert
SQL-GatewayKyuubi — 10000 (Thrift) · 10099 (Web-UI)
Spark-Master7077, Master-UI 4440
MetastoreHive Metastore 9083
Iceberg-KatalogGravitino REST 19001
KontoPP_SPARK_USER / PP_SPARK_PASSWORD
Es gibt Startkosten

Das Öffnen einer Session dauert mehrere Sekunden. Senden Sie keine kurzen Abfragen hierher — dafür sind CQL oder PostgreSQL viel schneller.

Verbinden​

beeline (über Kyuubi — empfohlen)​

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"'

Session-Isolation und Queueing werden aktiviert. Externe SQL-Clients wie DBeaver · Tableau verbinden sich ebenfalls mit derselben JDBC-URL.

spark-sql (direkt — für Debugging)​

docker exec -it plantpulse-datalake \
/opt/kopens/plantpulse-platform/plantpulse-analytics/spark/bin/spark-sql \
--master spark://127.0.0.1:7077

Beispiele​

Kataloge und Tabellen anzeigen​

SHOW CATALOGS;
SHOW DATABASES;
SHOW TABLES IN default;
DESCRIBE TABLE default.tm_tag_point;

Massenaggregation — was mit CQL nicht möglich ist​

Aggregationen, die ohne Partitionsschlüssel die gesamte Datenmenge durchsuchen, werden hier durchgeführt.

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;

Speicherorte mischen und verbinden​

Zeitreihen (Aster TSDB) und Anlagen-Metadaten (PostgreSQL) auf einmal anzeigen.

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;

Archiv (Iceberg) abfragen​

Historische Daten, die in die Cold-Tier verschoben wurden, bleiben als Iceberg-Tabellen erhalten.

-- 스냅샷 이력
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';

Der Status des Archiv-Jobs wird über die Zeilen cold_tier · archive_job unter pd retention angezeigt.

Wissenswertes​

  • 🔴 Verwenden Sie Spark für Aggregationen über hierarchische Aster-TSDB-Tabellen ohne Partitionsschlüssel. Die vollständige Scan-Aggregation in CQL führt zu falschen Werten, da sie keine Chunks zusammenführt (Hierarchischer Speicher).
  • Die Master-UI ist auf 4440 (nicht 8080).
  • PP_SPARK_PASSWORD wird für die Kyuubi-Verbindungsauthentifizierung verwendet und von hive-auth.properties erstellt.
  • Der Archiver (plantpulse-warehouse-web) läuft außerhalb des Data Lake im Plattform-Image → Warehouse-Modul.

Siehe auch​