Index mit Überspringen von Daten
Wichtig
DATASKIPPING INDEX
wurde in Databricks Runtime 7.0 entfernt. Es wird empfohlen, stattdessen Delta-Tabellen zu verwenden, die verbesserte Funktionen zum Überspringen von Daten bieten.
Wichtig
Diese Dokumentation wurde eingestellt und wird unter Umständen nicht aktualisiert. Die in diesem Inhalt erwähnten Produkte, Dienste oder Technologien werden nicht mehr unterstützt. Weitere Informationen finden Sie unter Überspringen von Daten für Delta Lake.
Beschreibung
Zusätzlich zur Partitionsbereinigung enthält Databricks Runtime ein weiteres Feature, das das Überprüfen irrelevanter Daten vermeiden soll, nämlich er Indes mit Überspringen von Daten (DATASKIPPING INDEX). Es arbeitet mit Statistiken auf Dateiebene, um zusätzliches Überspringen mit Dateigranularität durchzuführen. Dies funktioniert mit einer Partitionierung im Stil von Hive, ohne davon abhängig zu sein.
Die Effektivität des Überspringens von Daten hängt von den Merkmalen Ihrer Daten und ihrem physischen Layout ab. Da das Überspringen mit Dateigranularität erfolgt, ist es wichtig, dass Ihre Daten horizontal über mehrere Dateien partitioniert sind. Dies geschieht in der Regel aufgrund mehrerer Anfügeaufträge, der Partitionierung (Shuffle) und der Verwendung von Buckets bzw. von spark.sql.files.maxRecordsPerFile
. Es funktioniert am besten bei Tabellen mit sortierten Buckets (df.write.bucketBy(...).sortBy(...).saveAsTable(...)
/ CREATE TABLE ... CLUSTERED BY ... SORTED BY ...
) oder mit Spalten, die mit Partitionsschlüsseln korreliert sind (z. B. brandName - modelName
, companyID - stockPrice
), aber auch, wenn Ihre Daten zufällig eine gewisse Sortiertheit/Clusterung aufweisen (z. B. orderID
, bitcoinValue
).
Hinweis
Dieses Betafeature hat eine Reihe wichtiger Einschränkungen:
- Es muss manuell für die jeweilige Tabelle aktiviert werden.
- Es unterstützt nur SQL, sodass es keine DataFrame-API dafür gibt.
- Sobald eine Tabelle indiziert ist, sind die Auswirkungen nachfolgender
INSERT
- oderADD PARTITION
-Vorgänge garantiert nicht sichtbar, bis der Index explizit aktualisiert wurde.
SQL-Syntax
Index erstellen
CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
Aktiviert das Überspringen von Daten in der angegebenen Tabelle für die ersten (d. h. am weitesten links befindlichen) N unterstützten Spalten, wobei N durch spark.databricks.io.skipping.defaultNumIndexedCols
gesteuert wird (Standard: 32)
partitionBy
-Spalten sind stets indiziert und zählen nicht zu dieser Anzahl N.
Erstellen eines Index für Spalten
CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
FOR COLUMNS (col1, ...)
Aktiviert das Überspringen von Daten in der angegebenen Tabelle für die angegebene Liste von Spalten. Ähnlich wie zuvor werden stets alle partitionBy
-Spalten zusätzlich zu den angegebenen Spalten indiziert.
Beschreiben des Index
DESCRIBE DATASKIPPING INDEX [EXTENDED] ON [TABLE] [db_name.]table_name
Zeigt an, welche Spalten der gegebenen Tabelle indiziert sind und welche Arten von Statistiken auf Dateiebene gesammelt werden.
Wenn EXTENDED
angegeben wird, wird eine dritte Spalte mit der Bezeichnung effectiveness_score angezeigt, die ein ungefähres Maß dafür liefert, wie vorteilhaft das Überspringen von Daten für die Filter in den entsprechenden Spalten sein dürfte.
Aktualisieren des vollständigen Index
REFRESH DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
Erstellt den gesamten Index neu. Das heißt, alle Partitionen der Tabelle werden neu indiziert.
Aktualisieren von Partitionen
REFRESH DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
PARTITION (part_col_name1[=val1], part_col_name2[=val2], ...)
Indiziert nur die angegebenen Partitionen neu. Dieser Vorgang sollte im Allgemeinen schneller sein als die vollständige Indexaktualisierung.
Index löschen
DROP DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
Deaktiviert das Überspringen von Daten für die angegebene Tabelle und löscht alle Indexdaten.