Freigeben über


Delta Sharing

Gilt für: Häkchen ja Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime 10.4 LTS und höher Häkchen gesetzt ja Nur Unity Catalog

Delta Sharing ist ein offenes Protokoll für die sichere Datenfreigabe für andere Organisationen, und zwar unabhängig von den verwendeten Computingplattformen. Damit können Sie Tabellensammlungen in einem Unity Catalog-Metastore in Echtzeit freigeben, ohne sie zu kopieren, sodass Datenempfänger sofort mit der neuesten Version der freigegebenen Daten arbeiten können.

Delta Sharing besteht aus drei Komponenten:

  • Anbieter

    Ein Anbieter ist eine Entität, die Daten für die Freigabe zur Verfügung gestellt hat.

  • Freigaben

    Eine Freigabe stellt eine logische Gruppierung für die Tabellen bereit, die Sie freigeben möchten.

  • Empfänger

    Ein Empfänger gibt eine Organisation an, für die Sie eine beliebige Anzahl von Freigaben freigeben möchten.

Einen ausführlichen Leitfaden zur Verwendung von Delta Sharing finden Sie unter Was ist Delta Sharing?.

Anbieter

Gilt für: Häkchen ja Databricks SQL Häkchen Databricks Runtime 11.3 LTS und höher

Ein Datenanbieter ist ein Objekt, das die Organisation in der Realität repräsentiert, die die Daten freigibt. Ein Anbieter enthält Freigaben, die wiederum die freigegebenen Daten enthalten. Sobald ein Anbieter Sie als Empfänger hinzugefügt hat, können Sie

Beispiele

-- Change the data provider name locally.
> ALTER PROVIDER `Center for Disease Control` RENAME TO cdc;

-- List the shares the provider has granted you access too.
> SHOW SHARES IN PROVIDER cdc;
 vaccinedata

-- Make the share accessible locally as a catalog.
> CREATE CATALOG cdcdata USING SHARE cdc.vaccinedata;

-- Use the data.
> USE CATALOG cdcdata;
> SELECT COUNT(*) FROM information_schema.tables;
  10

Freigaben

Eine Freigabe ist ein Container, der mit dem Befehl CREATE SHARE instanziiert wird. Nach dem Erstellen können Sie eine Sammlung vorhandener und im Metastore definierter Tabellen mit dem Befehl ALTER SHARE iterativ registrieren. Sie können Tabellen unter ihrem ursprünglichen Namen registrieren (qualifiziert durch das ursprüngliche Schema) oder alternative verfügbar gemachte Namen angeben.

Sie müssen ein Metastore- oder Kontoadministrator sein, um Freigaben erstellen, ändern und löschen zu können.

Beispiele

-- Create share `customer_share` only if share with same name doesn't exist, with a comment.
> CREATE SHARE IF NOT EXISTS customer_share COMMENT 'This is customer share';

-- Add 2 tables to the share.
-- Expose my_schema.tab1 a different name.
-- Expose only two partitions of other_schema.tab2
> ALTER SHARE customer_share ADD TABLE my_schema.tab1 AS their_schema.tab1;
> ALTER SHARE customer_share ADD TABLE other_schema.tab2 PARTITION (c1 = 5), (c1 = 7);

-- List the content of the share
> SHOW ALL IN SHARE customer_share;
  name              type  shared_object           added_at                     added_by                   comment partitions
  ----------------- ----  ---------------------- ---------------------------- -------------------------- ------- -----------------
  other_schema.tab2 TABLE main.other_schema.tab2 2022-01-01T00:00:01.000+0000 alwaysworks@databricks.com NULL
  their_schema.tab1 TABLE main.myschema.tab2     2022-01-01T00:00:00.000+0000 alwaysworks@databricks.com NULL   (c1 = 5), (c1 = 7)

Empfänger

Ein Empfänger (Recipient) ist ein Objekt, das Sie mit CREATE RECIPIENT erstellen und das eine Organisation repräsentiert, der Sie den Zugriff auf die Freigaben gewähren möchten. Beim Erstellen eines Empfängers generiert Databricks SQL einen Aktivierungslink, den Sie an die Organisation senden können. Um den Aktivierungslink nach der Erstellung abzurufen, verwenden Sie den Befehl DESCRIBE RECIPIENT.

Nachdem ein Empfänger erstellt wurde, können Sie ihm mit GRANT ON SHAREdie Berechtigung SELECT für Freigaben Ihrer Wahl erteilen.

Sie müssen ein Metastore-Administrator sein, um Empfänger erstellen und löschen sowie den Zugriff auf Freigaben gewähren zu können.

Beispiele

-- Create a recipient.
> CREATE RECIPIENT IF NOT EXISTS other_org COMMENT 'other.org';

-- Retrieve the activation link to send to other.org
> DESCRIBE RECIPIENT other_org;
  name      created_at                   created_by                 comment   activation_link active_token_id                      active_token_expiration_time rotated_token_id rotated_token_expiration_time
  --------- ---------------------------- -------------------------- --------- --------------- ------------------------------------ ---------------------------- ---------------- -----------------------------
  other_org 2022-01-01T00:00:00.000+0000 alwaysworks@databricks.com other.org https://....    0160c81f-5262-40bb-9b03-3ee12e6d98d7 9999-12-31T23:59:59.999+0000 NULL              NULL

-- Choose shares that other.org has access to
> GRANT SELECT ON SHARE customer_share TO RECIPIENT other_org;