Ausführen von Verbundabfragen für Google BigQuery

Wichtig

Dieses Feature befindet sich in der Public Preview.

In diesem Artikel wird beschrieben, wie Sie Lakehouse Federation einrichten, um Verbundabfragen von BigQuery-Daten auszuführen, die nicht von Azure Databricks verwaltet werden. Weitere Informationen zur Lakehouse Federation finden Sie unter Was ist Lakehouse Federation.

Um mithilfe von Lakehouse Federation eine Verbindung mit Ihrer BigQuery-Datenbank herzustellen, müssen Sie Folgendes in Ihrem Azure Databricks Unity Catalog-Metastore erstellen:

  • Eine Verbindung mit Ihrer BigQuery-Datenbank.
  • Einen Fremdkatalog, der Ihre BigQuery-Datenbank in Unity Catalog spiegelt, sodass Sie die Abfragesyntax und Datengovernancetools von Unity Catalog zum Verwalten des Azure Databricks-Benutzerzugriffs auf die Datenbank verwenden können.

Voraussetzungen

Anforderungen an den Arbeitsbereich:

  • Der Arbeitsbereich muss für Unity Catalog aktiviert sein.

Computeanforderungen:

  • Netzwerkkonnektivität zwischen Ihrem Databricks Runtime-Cluster oder SQL-Warehouse und den Zieldatenbanksystemen. Weitere Informationen finden Sie unter Netzwerkempfehlungen für Lakehouse Federation.
  • Azure Databricks-Cluster müssen Databricks Runtime 13.3 LTS oder höher und den Clusterzugriffsmodus „Freigegeben“ oder „Einzelbenutzer“ verwenden.
  • SQL-Warehouses müssen „Pro“ oder serverlos sein.

Erforderliche Berechtigungen:

  • Um eine Verbindung zu erstellen, müssen Sie Metastore-Administrator oder Benutzer mit der Berechtigung „CREATE CONNECTION“ für den Unity Catalog-Metastore sein, der an den Arbeitsbereich angefügt ist.
  • Um einen Fremdkatalog zu erstellen, müssen Sie über die Berechtigung „CREATE CATALOG“ für den Metastore verfügen und entweder der Besitzer der Verbindung sein oder über die Berechtigung „CREATE FOREIGN CATALOG“ für die Verbindung verfügen.

In jedem folgenden aufgabenbasierten Abschnitt werden zusätzliche Berechtigungsanforderungen angegeben.

Erstellen einer Verbindung

Eine Verbindung gibt einen Pfad und Anmeldeinformationen für den Zugriff auf ein externes Datenbanksystem an. Zum Erstellen einer Verbindung können Sie den Katalog-Explorer oder den SQL-Befehl „CREATE CONNECTION“ in einem Azure Databricks-Notebook oder im Databricks SQL-Abfrage-Editor verwenden.

Erforderliche Berechtigungen: Metastore-Administrator oder Benutzer mit der Berechtigung „CREATE CONNECTION“.

Katalog-Explorer

  1. Klicken Sie in Ihrem Azure Databricks-Arbeitsbereich auf Symbol „Katalog“Katalog.

  2. Erweitern Sie im linken Bereich das Menü Externe Daten, und wählen Sie Verbindungen aus.

  3. Klicken Sie auf Neue Verbindung erstellen.

  4. Geben Sie einen benutzerfreundlichen Verbindungsnamen ein.

  5. Wählen Sie einen Verbindungstyp von BigQuery aus.

  6. Geben Sie die folgende Verbindungseigenschaft für Ihre BigQuery-Instanz ein.

    GoogleServiceAccountKeyJson: Ein unformatiertes JSON-Objekt, das verwendet wird, um das BigQuery-Projekt anzugeben und Authentifizierung bereitzustellen. Sie können dieses JSON-Objekt generieren und von der Seite mit den Details des Dienstkontos in Google Cloud unter „KEYS“ herunterladen. Das Dienstkonto muss über die erforderlichen Berechtigungen in BigQuery verfügen, einschließlich BigQuery-Benutzer und BigQuery Data Viewer. Im Folgenden finden Sie ein Beispiel.

    {
      "type": "service_account",
      "project_id": "PROJECT_ID",
      "private_key_id": "KEY_ID",
      "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
      "client_email": "SERVICE_ACCOUNT_EMAIL",
      "client_id": "CLIENT_ID",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://accounts.google.com/o/oauth2/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL",
      "universe_domain": "googleapis.com"
    }
    
  7. (Optional) Klicken Sie auf Verbindung testen, um die Netzwerkverbindung zu bestätigen. Diese Aktion testet keine Authentifizierung.

  8. (Optional) Fügen Sie einen Kommentar hinzu.

  9. Klicken Sie auf Erstellen.

Sql

Führen Sie in einem Notebook oder im Databricks SQL-Abfrage-Editor den folgenden Befehl aus. Ersetzen Sie <GoogleServiceAccountKeyJson> durch ein unformatiertes JSON-Objekt, das das BigQuery-Projekt angibt und Authentifizierung bereitstellt. Sie können dieses JSON-Objekt generieren und von der Seite mit den Details des Dienstkontos in Google Cloud unter „KEYS“ herunterladen. Das Dienstkonto muss über die erforderlichen Berechtigungen in BigQuery verfügen, einschließlich BigQuery-Benutzer und BigQuery Data Viewer. Ein Beispiel für ein JSON-Objekt finden Sie auf der Registerkarte Katalog-Explorer auf dieser Seite.

CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
  GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);

Es wird empfohlen, Aure Databricks-Geheimnisse anstelle von Klartext-Zeichenfolgen für vertrauliche Werte wie Anmeldeinformationen zu verwenden. Beispiele:

CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
  GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)

Informationen zum Einrichten von Geheimnissen finden Sie unter Verwaltung von Geheimnissen.

Erstellen eines Fremdkatalogs

Ein Fremdkatalog spiegelt eine Datenbank in einem externen Datensystem, sodass Sie Abfragen und die Verwaltung des Zugriffs auf Daten in dieser Datenbank mithilfe von Azure Databricks und Unity Catalog steuern können. Um einen Fremdkatalog zu erstellen, verwenden Sie eine Verbindung mit der bereits definierten Datenquelle.

Zum Erstellen eines fremden Katalogs können Sie den Katalog-Explorer oder CREATE FOREIGN CATALOG in einem Azure Databricks-Notebook oder im Databricks SQL-Abfrage-Editor verwenden.

Erforderliche Berechtigungen: Sie müssen über die CREATE CATALOG-Berechtigung für den Metastore verfügen und entweder Besitzer der Verbindung sein oder die Berechtigung „CREATE FOREIGN CATALOG“ für sie haben.

Katalog-Explorer

  1. Klicken Sie in Ihrem Azure Databricks-Arbeitsbereich auf Symbol „Katalog“Katalog.
  2. Klicken Sie auf die Schaltfläche Katalog erstellen.
  3. Geben Sie im Dialogfeld Neuen Katalog erstellen einen Namen für den Katalog ein, und wählen Sie als Typ die Option Fremd aus.
  4. Wählen Sie die Verbindung aus, die Zugriff auf die Datenbank bietet, die Sie als Unity Catalog-Katalog spiegeln möchten.
  5. Klicken Sie auf Erstellen.

Sql

Führen Sie den folgenden SQL-Befehl in einem Notebook oder im Databricks-SQL-Editor aus. Elemente in Klammern sind optional. Ersetzen Sie die folgenden Platzhalterwerte.

  • <catalog-name>: Name für den Katalog in Azure Databricks.
  • <connection-name>: Das Verbindungsobjekt, das die Datenquelle, den Pfad und die Anmeldeinformationen für den Zugriff angibt.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;

Unterstützte Pushdowns

Die folgenden Pushdowns werden unterstützt:

  • Filter
  • Projektionen
  • Begrenzung
  • Funktionen: teilweise, nur für Filterausdrücke. (Zeichenfolgenfunktionen, mathematische Funktionen, Daten-, Zeit- und Zeitstempelfunktionen und andere verschiedene Funktionen wie Alias, Cast, SortOrder)
  • Aggregate
  • Sortierung bei Verwendung mit einem Grenzwert

Die folgenden Pushdowns werden nicht unterstützt:

  • Joins
  • Windows-Funktionen

Datentypzuordnungen

Die folgende Tabelle enthält die Zuordnung von BigQuery- zu Spark-Datentypen.

BigQuery-Typ Spark-Typ
bignumeric/numeric DecimalType
int64 LongType
float64 DoubleType
Array, Geografie, Intervall, JSON, Zeichenfolge, Struktur VarcharType
Byte BinaryType
bool BooleanType
date DateType
datetime, time, timestamp TimestampType/TimestampNTZType

Wenn Sie aus BigQuery lesen, wird BigQuery Timestamp Spark TimestampType zugeordnet wenn preferTimestampNTZ = false (Standard). BigQuery Timestamp wird TimestampNTZType zugeordnet, wenn preferTimestampNTZ = true.