Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit feingranularer Zugriffssteuerung können Sie den Zugriff auf bestimmte Daten mithilfe von Ansichten, Zeilenfiltern und Spaltenmasken einschränken. Auf dieser Seite wird erläutert, wie serverlose Berechnungsdienste verwendet werden, um differenzierte Zugriffssteuerungen für dedizierte Computressourcen zu erzwingen.
Hinweis
Dedicated Compute ist universell oder Auftrags-Compute, konfiguriert mit Dedicated-Zugriffsmodus (früher Einzelbenutzermodus). Weitere Informationen finden Sie unter Zugriffsmodi.
Anforderungen
Um dediziertes Compute zu nutzen, um eine Sicht oder Tabelle mit feinkörnigen Zugriffssteuerungen abzufragen:
- Die dedizierte Computeressource muss sich auf Databricks Runtime 15.4 LTS oder höher befinden.
- Der Arbeitsbereich muss für die serverlose Berechnung aktiviert sein.
Wenn Ihre dedizierte Computeressource und Ihr Arbeitsbereich diese Anforderungen erfüllen, wird die Datenfilterung automatisch ausgeführt.
Funktionsweise der Datenfilterung auf dediziertem Compute
Wenn eine Abfrage auf ein Datenbankobjekt mit differenzierten Zugriffssteuerungen zugreift, übergibt die dedizierte Computeressource die Abfrage an die serverlose Berechnung Ihres Arbeitsbereichs, um die Datenfilterung auszuführen. Die gefilterten Daten werden dann mithilfe temporärer Dateien auf arbeitsbereichsinternem Cloudspeicher zwischen serverloser und dedizierter Berechnung übertragen.
Diese Funktionalität gilt für die folgenden Datenbankobjekte:
- Dynamische Ansichten
- Tabellen mit Zeilenfiltern oder Spaltenmasken
-
Ansichten , die über Tabellen erstellt wurden, für die der Benutzer nicht über die
SELECT
Berechtigung verfügt - Materialisierte Sichten
- Streaming-Tabellen
Im folgenden Diagramm verfügt ein Benutzer über die SELECT
Berechtigung für table_1
, view_2
und table_w_rls
, auf die Zeilenfilter angewendet werden. Der Benutzer hat nicht die Berechtigung SELECT
auf table_2
, auf die durch view_2
verwiesen wird.
Die Abfrage für table_1
wird vollständig von der dedizierten Computeressource behandelt, da keine Filterung erforderlich ist. Die Abfragen zu „view_2
“ und „table_w_rls
“ erfordern eine Datenfilterung, um die Daten zurückzugeben, auf die der Benutzer zugreifen kann. Diese Abfragen werden durch die Datenfilterfunktion auf serverlosem Compute bearbeitet.
Unterstützung für Schreibvorgänge
Von Bedeutung
Dieses Feature befindet sich in der Public Preview.
In Databricks Runtime 16.3 und höher können Sie in Tabellen schreiben, auf die Zeilenfilter oder Spaltenmasken angewendet wurden, indem Sie die folgenden Optionen verwenden:
- Der MERGE INTO SQL-Befehl, den Sie verwenden können, um
INSERT
,UPDATE
undDELETE
Funktionen zu erreichen. - Der Delta-Zusammenführungsvorgang.
- Die
DataFrame.write.mode("append")
API.
Um die Funktionalität von INSERT
, UPDATE
und DELETE
zu erreichen, können Sie eine Stagingtabelle und die MERGE INTO
- und WHEN MATCHED
-Klauseln der WHEN NOT MATCHED
-Anweisung verwenden.
Im Folgenden sehen Sie ein Beispiel dafür, wie man UPDATE
mit MERGE INTO
verwendet:
MERGE INTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHEN MATCHED THEN
UPDATE SET
t.column1 = s.column1,
t.column2 = s.column2;
Im Folgenden sehen Sie ein Beispiel dafür, wie man INSERT mit MERGE INTO verwendet:
MERGE INTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHEN NOT MATCHED THEN
INSERT (id, column1, column2) VALUES (s.id, s.column1, s.column2);
Im Folgenden sehen Sie ein Beispiel für ein DELETE-Befehl: MERGE INTO
MERGE INTO target_table AS t
USING source_table AS s ON t.id = s.id
WHEN MATCHED AND s.some_column = TRUE THEN DELETE;
Unterstützung für DDL, SHOW, DESCRIBE und andere Befehle
In Databricks Runtime 17.1 und höher können Sie die folgenden Befehle in Kombination mit differenzierten zugriffsgesteuerten Objekten auf dedizierter Berechnung verwenden:
- DDL-Anweisungen
- SHOW-Anweisungen
- DESCRIBE-Anweisungen
- OPTIMIZE
- DESCRIBE HISTORY
- FSCK REPAIR TABLE (Databricks Runtime 17.2 und höher)
Bei Bedarf werden diese Befehle automatisch auf serverloser Berechnung ausgeführt.
Einige Befehle werden nicht unterstützt, einschließlich VACCUM, RESTOREund REORG TABLE.
Serverlose Computekosten
Kunden werden für die serverlosen Computeressourcen in Rechnung gestellt, die Datenfiltervorgänge ausführen. Für Preise Informationen, siehe Plattform Ebenen und Add-Ons.
Benutzer mit Zugriff können die system.billing.usage
Tabelle abfragen, um zu sehen, wie viel ihnen berechnet wurde. Zum Beispiel zeigt die folgende Abfrage die Aufschlüsselung der Compute-Kosten nach Benutzer.
SELECT usage_date,
sku_name,
identity_metadata.run_as,
SUM(usage_quantity) AS `DBUs consumed by FGAC`
FROM system.billing.usage
WHERE usage_date BETWEEN '2024-08-01' AND '2024-09-01'
AND billing_origin_product = 'FINE_GRAINED_ACCESS_CONTROL'
GROUP BY 1, 2, 3 ORDER BY 1;
Leistungsansicht bei aktivierter Datenfilterung
Die Spark-Benutzeroberfläche für dedizierte Compute zeigt Metriken an, die Sie verwenden können, um die Leistung Ihrer Abfragen zu verstehen. Für jede Abfrage, die Sie auf der Compute-Ressource ausführen, zeigt die Registerkarte SQL/Dataframe die Abfrage-Graph-Zusicherung an. Wenn eine Abfrage an der Datenfilterung beteiligt war, zeigt die Benutzeroberfläche einen RemoteSparkConnectScan-Operator-Knoten am unteren Rand des Graphen an. Dieser Knoten zeigt Metrik an, die Sie zur Untersuchung der Abfrageleistung nutzen können. Siehe Compute-Informationen in der Spark-Benutzeroberfläche ansehen.
Erweitern Sie den RemoteSparkConnectScan-Operator-Knoten, um Metriken zu sehen, die solche Fragen adressieren wie die folgenden:
- Wie viel Zeit hat das Filtern der Daten in Anspruch genommen? Ansicht der Gesamt-Remote-Ausführungszeit
- Wie viele Zeilen blieben nach dem Filtern der Daten übrig? „Zeilenausgabe“ anzeigen.
- Wie viele Daten (in Bytes) wurden nach der Datenfilterung zurückgegeben? „Größe der Zeilenausgabe“ anzeigen.
- Wie viele Datendateien wurden partitioniert gelöscht und mussten nicht aus dem Speicher gelesen werden? Ansicht „Gelöschte Dateien“ und „Größe der gelöschten Dateien“
- Wie viele Datendateien konnten nicht gelöscht werden und mussten aus dem Speicher gelesen werden? Ansicht „Dateien lesen“ und „Größe der gelesenen Dateien“.
- Von den Dateien, die gelesen werden mussten, wie viele befanden sich bereits im Cache? „Größe der Cachetreffer“ und „Größe der Cache-Fehlversuche“ anzeigen.
Einschränkungen
Nur Batch-Lesevorgänge werden für Streaming-Tabellen unterstützt. Tabellen mit Zeilenfiltern oder Spaltenmasken unterstützen keine Streamingworkloads auf dediziertem Compute.
Der Standardkatalog (
spark.sql.catalog.spark_catalog
) kann nicht geändert werden.In Databricks Runtime 16.2 und unten gibt es keine Unterstützung für Schreib- oder Aktualisierungstabellenvorgänge in Tabellen, auf die Zeilenfilter oder Spaltenmasken angewendet wurden.
Insbesondere werden DML-Vorgänge wie ,
INSERT
,DELETE
,UPDATE
,REFRESH TABLE
undMERGE
, nicht unterstützt. Sie können nur (SELECT
) aus diesen Tabellen lesen.Schreibvorgänge für Tabellen in Databricks Runtime 16.3 und höher, wie zum Beispiel
INSERT
,DELETE
undUPDATE
, werden nicht unterstützt, können jedoch durchgeführt werden mitMERGE
, das unterstützt wird.In Databricks Runtime 16.2 und darunter werden Selbstverknüpfungen standardmäßig blockiert, wenn die Datenfilterung aufgerufen wird, da diese Abfragen möglicherweise unterschiedliche Schnappschüsse derselben Remotetabelle zurückgeben. Sie können diese Abfragen jedoch aktivieren, indem Sie
spark.databricks.remoteFiltering.blockSelfJoins
auffalse
auf dem Rechner festlegen, auf dem Sie diese Befehle ausführen.In Databricks Runtime 16.3 und höher werden Momentaufnahmen automatisch zwischen dedizierten und serverlosen Computeressourcen synchronisiert. Aufgrund dieser Synchronisierung geben Self-Join-Abfragen, die die Datenfilterfunktion verwenden, identische Momentaufnahmen zurück und sind standardmäßig aktiviert. Die Ausnahmen sind materialisierte Sichten und alle Ansichten, materialisierten Ansichten und Streamingtabellen, die mithilfe von Delta Sharing freigegeben werden. Bei diesen Objekten werden Selbstverknüpfungen standardmäßig blockiert. Sie können diese Abfragen jedoch aktivieren, indem Sie für den Rechner, auf dem Sie diese Befehle ausführen,
spark.databricks.remoteFiltering.blockSelfJoins
auf false setzen.Wenn Sie Selbstverknüpfungsabfragen für materialisierte Ansichten und alle Ansichten, materialisierten Ansichten und Streamingtabellen aktivieren, müssen Sie sicherstellen, dass es keine gleichzeitigen Schreibvorgänge für die Objekte gibt, die verknüpft werden.
- Kein Support in Docker-Bildern.
- Keine Unterstützung bei der Verwendung von Databricks Container Services.
- Sie müssen die Ports 8443 und 8444 öffnen, um eine differenzierte Zugriffssteuerung auf dedizierter Compute zu ermöglichen. Siehe Netzwerksicherheitsgruppenregeln.