Create Bloom Filter Index (Delta Lake on Azure Databricks)

CREATE BLOOMFILTER INDEX
ON [TABLE] table_name
[FOR COLUMNS(columnName1 [OPTIONS(..)], columnName2, ...)]
[OPTIONS(..)]

Erstellen Sie einen Bloom-Filterindex für neue oder umgeschriebene Daten. Es werden keine Bloom-Filter für vorhandene Daten erstellt. Der Befehl schlägt fehl, wenn entweder der Tabellenname oder eine der Spalten nicht vorhanden ist. Wenn die Bloom-Filterung für eine Spalte aktiviert ist, werden vorhandene Bloom-Filteroptionen durch die neuen Optionen ersetzt.

Es ist zwar nicht möglich, einen Bloom-Filterindex für bereits geschriebene Daten zu erstellen, aber der OPTIMIZE-Befehl aktualisiert Bloom-Filter für Neuorganisierte Daten. Daher können Sie einen Bloom-Filter abfüllen, indem Sie OPTIMIZE für eine Tabelle ausführen:

  • Wenn Sie die Tabelle noch nicht optimiert haben.
  • Mit einer anderen Dateigröße, die erfordert, dass die Datendateien neu geschrieben werden.
  • Mit einem ZORDER (oder einem anderen ZORDER , falls bereits vorhanden), das erfordert, dass die Datendateien neu geschrieben werden.

Sie können den Bloom-Filter optimieren, indem Sie Optionen auf Spalten- oder Tabellenebene definieren:

  • fpp: Falsch positive Wahrscheinlichkeit. Die gewünschte falsch positive Rate pro geschriebenen Bloom-Filter. Dies wirkt sich auf die Anzahl der Bits aus, die erforderlich sind, um ein einzelnes Element in den Bloom-Filter zu setzen, und wirkt sich auf die Größe des Bloom-Filters aus. Der Wert muss größer als 0 und kleiner als oder gleich 1 sein. Der Standardwert ist 0,1, was 5 Bits pro Element erfordert.
  • numItems: Anzahl der unterschiedlichen Elemente, die die Datei enthalten kann. Diese Einstellung ist wichtig für die Qualität der Filterung, da sie sich auf die Gesamtzahl der bits auswirkt, die im Bloom-Filter verwendet werden (Anzahl der Elemente * Anzahl der Bits pro Element). Wenn diese Einstellung falsch ist, wird der Bloom-Filter entweder sehr wenig aufgefüllt, wodurch Speicherplatz auf dem Datenträger verloren geht und Abfragen verlangsamt werden, die diese Datei herunterladen müssen, oder er ist zu voll und ist weniger genau (höhereS FPP). Der Wert muss größer als 0 sein. Der Standardwert ist 1 Million Elemente.
  • maxExpectedFpp: Der erwartete FPP-Schwellenwert, für den kein Bloom-Filter auf den Datenträger geschrieben wird. Die maximal erwartete falsch positive Wahrscheinlichkeit, mit der ein Bloom-Filter geschrieben wird. Wenn das erwartete FPP diesen Schwellenwert überschreitet, ist die Selektivität des Bloom-Filters zu niedrig. die Zeit und Ressourcen, die für die Verwendung des Bloom-Filters benötigt werden, überwiegt deren Nützlichkeit. Der Wert muss zwischen 0 und 1 liegen. Der Standardwert ist 1.0 (deaktiviert).

Diese Optionen spielen nur beim Schreiben der Daten eine Rolle. Sie können diese Eigenschaften auf verschiedenen hierarchischen Ebenen konfigurieren: Schreibvorgang, Tabellenebene und Spaltenebene. Die Spaltenebene hat Vorrang vor den Tabellen- und Vorgangsebenen, und die Tabellenebene hat Vorrang vor der Vorgangsebene.

Weitere Informationen finden Sie unter Bloom-Filterindizes.