RDD vs. DataFrames
RDD = Resilient Distributed Dataset
RDD:
- schemafrei
- Verteile Liste von Objekten
- Spark kennt innere Struktur nicht
DataFrame:
- mit Schema
- Verteilte Tabelle mit benannten, typisierten Spalten
- Basis für Spark SQL
Delta Lake
Verwaltung von Big-Data-Workloads in Data Lakes zu verbessern
Funktionen für
Transaktionalität
Versionierung
ACID-Konformität (Atomicity, Consistency, Isolation, Durability)
Delta Format ist die unterste Storage-Schicht.
Delta Tables
eine logische Sicht, die auf dem Delta Format aufsetzen und eine Table Abstraction Layer bilden
ermöglichen Abfragen mitttels SQL oder einer DataFrame API (z.B. Spark Data Frame API)
Best Practice: Medallion Architecture
Bronze = Rohdaten (unverändert)
Silber = Überführung in standardisiertes Format, Data Cleansing
Gold = Zielanwendungsgerechte Aufbereitung
Wie viele Parquet File werden angelegt?
die Anzahl der Partitionen des RDDs bestimmt die Anzahl der Parquet Files.
Optimale Anzahl der Partitionen = Anzahl CPU Cores * Server * 4
coalesce(): effiziente Verkleinerung von Partitionen
Timetravel
die Fähigkeit, auf vorherige Versionen von Daten in einer DeltaTable zuzugreifen
oder
anhand des Timestamps eine Version wiederherzustellen
Ausgabe des Transaktionslogs :
Operationen
Timestamps
Wer hat Änderungen vorgenommen
Performance Tuning
Z-Order Optimierung
Liquid Clustering
Bin Packing / Compression
Z-Order-Optimierung (wie funktioniert; in Delta Table; Nachteile)
-> Anordnung von Datenpunkten in multidimensionalen Datenstruktur -> bewahrt räumliche Nähe der Punkte
Vorgehen:
Binäre Darstellung: jede Koordinate des mehrdim. Datenpunkts in binäre Darstellung umgewandelt
Bit-Interleaving: Bits der Koordinaten werden abwechselnd miteinander verwoben (mit 2. Zahl anfangen)
Numerisch Sortieren: der resultierenden Werte
-> weitere Datenbank-speziefische Optimierung: Z-Werte als B-Tree in Form eines Datenbankindexes organisieren
Delta Table:
Technik zur Datensortierung die Wert mehrerer Spalten sortiert
verbessert Lokalität ähnlicher Daten
-> optimiert Anfragen von Filterbedingungen über mehrere Spalten, da zu scannende Datenmenge reduziert
Nachteile:
CPU-intensiv
Neuberechnung erforderlich
Bsp:
Liquid Clustering (Was is das; Limitationen)
-> Verbesserung des Daten-Skipping (Files werden geskipped, Entscheidung durch Metadaten) gegeüber traditioneller Z-Curve
-> nutzt Hilbert-Kurve
statt in Blöcke zu partionieren (z-curve) -> Gruppen von Daten mit ZCubes (Hilbert-geclusterten Daten)
Gruppen durch OPTIMIZE-Befehl erzeugt
Limitationen:
Standardmetriken werden nur für ersten 32 Spalten Statistiken erfasst -> nur für diese anwendbar
Bis zu 4 Clustering-Spalten möglich
Benutzer Feature Flag aktivieren
Databricks Runtime 15.2
Vorgehen Bin-Packing:
Starte mit 5 kleinen, 3 mittleren und 1 right-sized Parquet File
Bin Pack die Files in 3 right-size Flies
Small File Compaction mit Delta Lake
-> Small File Problem: viele kleine Parquet Files führen zu Performance Problemen
-> Parquet File sollte nicht kliener als 128 MB und nicht größer als 1 GB sein
-> Compaction muss manuell angestoßen werden
-> VACUUM-Job: löscht alte Logdateien(max. 30 Tage aufbewart) und Parquet Files (max. 7 Tage aufbewahrt) -> nicht empfohlen
Databricks Filesystem (DBFS)
ein proprietäres verteiltes Dateisystem, welches das HDFS ersetzt
Eigenschaften:
default blocksize 128MB (analog zu HDFS)
POSIX-kompatibel und kann mit dem Mountpoint /dbfs adressiert werden (bzw. mit dbfs:/)
DBFS ist eine Abstraktion über einen Object Storage
Spark Metastore
ein zentrales Repository, in dem Metadaten über die Strukturen innerhalb eines Spark SQL- Kontextes gespeichert werden
in Produktionsumgebungen ist der Metastore HIVE empfohlen (im Hadoop Stack enthalten). Falls nicht vorhanden autom. Wechseln auf eine lokale Derby Datenbank (Embedded Modus)
Change Data Feed ( CDF)
Feature in DeltaTable, um Änderungen auf Row Ebene zu lesen oder darauf zu abonnieren
Benutzer können kontinuierliche Änderungen verfolgen und in ihre Anwendungen einbinden
Delta Live Tables (DLT)
ein deklaratives Framework für die Erstellung zuverlässiger, verwaltbarer und testbarer Datenverarbeitungspipeline
Auf der Databricks Lakehouse-Plattform verwendet und hilft Datenteams dabei, sowohl Streaming- als auch Batch-ETL-Prozesse zu vereinfachen.
Streaming Tables
ermöglicht das inkrementelle Laden von Daten aus Dateien oder Datenströmen in eine Delta Tabelle.
Streaming Tabellen sind für append-only Workloads ausgelegt und eignen sich, wenn Daten inkrementell hinzukommen.
Materialized Views
Abfrageerg. basierend auf der neuesten Version der Quelldaten vorab zu berechnen
vorteilhaft bei langsamen Abfragen und häufig verwendeten Berechnungen
Refresh muss manuell oder durch Job/Workflows (Scheduler) angestoßen werden
Databricks Workflows/Jobs
Aufgaben so konfigurieren, dass sie in einer bestimmten Datenverarbeitungsumgebung nach einem bestimmten Zeitplan ausgeführt werden
Delta Sharing
offenes Protokoll für sicheren Datenaustausch, das die gemeinsame Nutzung von Daten mit anderen Organisationen unabhängig von den verwendeten Computerplattformen erleichtert
Databricks Terraform Provider
Managing Databricks Workspaces
deploy and manage clusters and jobs and to configure data access
Features Delta Lake
Time Travel
Update / Delete / Merge
Append-Modus (Delta Table)
fügt neue Daten an bestehende an ohne alte Dateien zu löschen
schreibt neue Parquet - File ins Verzeichnis
fügt Transaktion im Log hinzu - alte Dateien bleiben verfügbar
Overwrite-Modus (Delta Table)
ersetzt alle bestehenden Daten durch neue Daten -> alte Daten bleiben nur logischim Log
markiert alte Dateien als gelöscht
schreibt neue Dateien in atomaren Commit
alte Dateien via Time Travel wieder herstellen
Operation sind ACID-Konform: entweder alles ersetzt oder nichts ( Rollback bei Fehler)
Space Filling Curve (SFC)
mapping multidim Raum auf 1 dim
Kurve durchläuft jedes Zellelement (oder Pixel) in mehrdim Raum -> jede Zelle wird genau einmal besucht
create Database
wenn keine Datenbank davor erstellt -> Tabellen in default gespeichert
default
Datenbank gibt die Möglichkeit Deltatabellen zu strukturieren
in HIVE Metastore werden Namespaces verwaltet (keine richtigen Datenbanken angelegt
create Table
Tabellen werden ohne Primary Key (PK) / Foreign Key (FK) definert (in klassischem SQL Worst Practice)
!! dadurch werden Duplikate auf den PK nicht geprüft
Anzeigen der Metadaten aus dem HIVE Metastore
man kann nicht nativ die HIVE Datenbank ansteuern
Mittels describe extended erhält man gespeicherte Metadaten
describe extended
Last changeda month ago