Verbindung zu Databricks herstellen

Als BigQuery-Administrator können Sie eine Verbindung zum Lesen und Schreiben von Daten aus einem Databricks-Notebook erstellen. Die entsprechenden Schritte werden mit der Google Cloud Console und den Databricks-Arbeitsbereichen beschrieben. Sie können diese Schritte auch mit den Befehlszeilentools gcloud und databricks ausführen. Dies wird in dieser Anleitung jedoch nicht behandelt.

Databricks in Google Cloud ist eine in Google Cloudgehostete Databricks-Umgebung, die auf Google Kubernetes Engine (GKE) ausgeführt wird und eine integrierte Einbindung in BigQuery und andere Google Cloud -Technologien bietet. Wenn Sie noch nicht mit Databricks vertraut sind, können Sie sich das Video Introduction to Databricks Unified Data Platform ansehen, um einen Überblick über die Lakehouse-Plattform von Databricks zu erhalten.

Ziele

  • Konfigurieren Sie Google Cloud , um eine Verbindung zu Databricks herzustellen.
  • Databricks in Google Cloudbereitstellen.
  • BigQuery aus Databricks abfragen

Kosten

In dieser Anleitung werden kostenpflichtige Komponenten der Google Cloud Console verwendet, darunter BigQuery und GKE. Es gelten die BigQuery-Preise und GKE-Preise. Informationen zu den Kosten für ein Databricks-Konto, das auf Google Cloudausgeführt wird, finden Sie in der Databricks-Dokumentation im Abschnitt Konto einrichten und Arbeitsbereich erstellen.

Hinweis

Führen Sie die folgenden Schritte aus, bevor Sie Databricks mit BigQuery verbinden:

  1. Aktivieren Sie die BigQuery Storage API.
  2. Erstellen Sie ein Dienstkonto für Databricks.
  3. Cloud Storage-Bucket zum temporären Speichern erstellen

BigQuery Storage API aktivieren

Die BigQuery Storage API ist standardmäßig für alle neuen Projekte aktiviert, in denen BigQuery verwendet wird. Folgen Sie für vorhandene Projekte, für die die API nicht aktiviert ist, der Anleitung:

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery Storage API auf.

    Zur BigQuery Storage API

  2. Prüfen Sie, ob die BigQuery Storage API aktiviert ist.

    BigQuery Storage API aktiviert

Dienstkonto für Databricks erstellen

Erstellen Sie als Nächstes ein IAM-Dienstkonto (Identitäts- und Zugriffsverwaltung), damit ein Databricks-Cluster Abfragen für BigQuery ausführen kann. Wir empfehlen, diesem Dienstkonto die geringsten Berechtigungen zu gewähren, die für die Ausführung seiner Aufgaben erforderlich sind. Siehe BigQuery-Rollen und -Berechtigungen.

  1. Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.

    Zur Seite „Dienstkonten“

  2. Klicken Sie auf Dienstkonto erstellen, benennen Sie das Dienstkonto databricks-bigquery, geben Sie eine kurze Beschreibung wie Databricks tutorial service account ein und klicken Sie dann auf Erstellen und fortfahren.

  3. Geben Sie unter Diesem Dienstkonto Zugriff auf das Projekt erteilen die Rollen für das Dienstkonto an. Weisen Sie dem Dienstkonto die folgenden Rollen zu, um dem Dienstkonto die Berechtigung zum Lesen von Daten mit dem Databricks-Arbeitsbereich und der BigQuery-Tabelle im selben Projekt zu erteilen, insbesondere ohne auf eine materialisierte Ansicht zu verweisen:

    • BigQuery-Lesesitzungsnutzer
    • BigQuery-Datenbetrachter

    Gewähren Sie die folgenden Rollen, um die Berechtigung zum Schreiben von Daten zu gewähren:

    • BigQuery-Jobnutzer
    • BigQuery-Dateneditor
  4. Notieren Sie die E-Mail-Adresse des neuen Dienstkontos, um sie in späteren Schritten als Referenz zu nutzen.

  5. Klicken Sie auf Fertig.

Cloud Storage-Bucket erstellen

Zum Schreiben in BigQuery benötigt der Databricks-Cluster Zugriff auf einen Cloud Storage-Bucket, um die geschriebenen Daten zu puffern.

  1. Wechseln Sie in der Google Cloud Console zum Cloud Storage-Browser.

    Zum Storage-Browser

  2. Klicken Sie auf Bucket erstellen, um das Dialogfeld Bucket erstellen zu öffnen.

  3. Geben Sie einen Namen für den Bucket an, der zum Schreiben von Daten in BigQuery verwendet wird. Der Bucket-Name muss ein global eindeutiger Name sein. Wenn Sie einen bereits vorhandenen Bucket-Namen angeben, antwortet Cloud Storage mit einer Fehlermeldung. Geben Sie in diesem Fall einen anderen Namen für den Bucket an.

    Bucket-Dialog mit Databricks-bq-123 benennen

  4. Verwenden Sie für diese Anleitung die Standardeinstellungen für den Speicherort, die Speicherklasse, die Zugriffssteuerung und die erweiterten Einstellungen.

  5. Klicken Sie auf Erstellen, um den Cloud Storage-Bucket zu erstellen.

  6. Klicken Sie auf Berechtigungen, dann auf Hinzufügen und geben Sie dann die E-Mail-Adresse des Dienstkontos an, das Sie auf der Seite „Dienstkonten“ für den Databrick-Zugriff erstellt haben.

    Bild

  7. Klicken Sie auf Rolle auswählen und fügen Sie die Rolle Storage-Administrator hinzu.

  8. Klicken Sie auf Speichern.

Databricks in Google Cloudbereitstellen

Führen Sie die folgenden Schritte aus, um die Bereitstellung von Databricks in Google Cloudvorzubereiten.

  1. Folgen Sie der Anleitung in der Databricks-Dokumentation Databricks-Konto in Google Cloudeinrichten, um Ihr Databricks-Konto einzurichten.
  2. Nach der Registrierung finden Sie weitere Informationen zum Verwalten Ihres Databricks-Kontos.

Databricks-Arbeitsbereich, -Cluster und -Notebook erstellen

Die folgenden Schritte beschreiben, wie Sie einen Databricks-Arbeitsbereich, einen Cluster und ein Python-Notebook erstellen, um Code für den Zugriff auf BigQuery zu schreiben.

  1. Prüfen Sie die Databricks-Voraussetzungen.

  2. Erstellen Sie Ihren ersten Arbeitsbereich. Klicken Sie in der Databricks-Kontokonsole auf Arbeitsbereich erstellen.

  3. Geben Sie gcp-bq als Arbeitsbereichnamen an und wählen Sie Ihre Region aus.

    Bildschirm „Arbeitsbereich erstellen“ mit Name, Region und Google Cloud-Projekt-ID

  4. Um Ihre Google Cloud -Projekt-ID zu ermitteln, rufen Sie die Google Cloud Console auf und kopieren den Wert in das Feld Google Cloud -Projekt-ID.

    Zur Google Cloud Console

  5. Klicken Sie auf Speichern, um den Databricks-Arbeitsbereich zu erstellen.

  6. Wählen Sie zum Erstellen eines Databricks-Clusters mit Databricks 7.6 oder höher in der linken Menüleiste Cluster aus und klicken Sie oben auf Cluster erstellen.

  7. Geben Sie den Namen des Clusters und seine Größe an, klicken Sie dann auf Erweiterte Optionen und geben Sie die E-Mail-Adresse Ihres Google Cloud-Dienstkontos an.

    Neue Clusteroberfläche mit Google-Dienstkontodetails

  8. Klicken Sie auf Cluster erstellen.

  9. Folgen Sie der Anleitung unter Notebook erstellen, um ein Python-Notebook für Databricks zu erstellen.

BigQuery über DataBricks abfragen

Mit der obigen Konfiguration können Sie Databricks sicher mit BigQuery verbinden. Databricks verwendet eine Fork des Open-Source-Adapters für Google Apache Spark, um auf BigQuery zuzugreifen.

Databricks reduziert die Datenübertragung und beschleunigt Abfragen, indem bestimmte Abfrageprädikate automatisch übertragen werden, z. B. das Filtern von verschachtelten Spalten nach BigQuery. Darüber hinaus verringert sich die Möglichkeit, zuerst mit der API query() eine SQL-Abfrage in BigQuery auszuführen, und reduziert so die Übertragungsgröße des resultierenden Datasets.

In den folgenden Schritten wird beschrieben, wie Sie in BigQuery auf ein Dataset zugreifen und eigene Daten in BigQuery schreiben.

Auf ein öffentliches Dataset in BigQuery zugreifen

BigQuery enthält eine Liste der verfügbaren öffentlichen Datasets. So fragen Sie das BigQuery-Shakespeare-Dataset ab, das Teil der öffentlichen Datasets ist:

  1. Verwenden Sie das folgende Code-Snippet in Ihrem Databricks-Notebook, um die BigQuery-Tabelle zu lesen.

    table = "bigquery-public-data.samples.shakespeare"
    df = spark.read.format("bigquery").option("table",table).load()
    df.createOrReplaceTempView("shakespeare")
    

    Führen Sie den Code aus, indem Sie auf Shift+Return drücken.

    Sie können jetzt Ihre BigQuery-Tabelle über den Apache Spark-DataFrame (df) abfragen. Verwenden Sie beispielsweise Folgendes, um die ersten drei Zeilen des DataFrames anzuzeigen:

    df.show(3)
    

    Zum Abfragen einer anderen Tabelle aktualisieren Sie die Variable table.

  2. Ein wichtiges Feature von Databricks-Notebooks ist, dass Sie die Zellen verschiedener Sprachen wie Scala, Python und SQL in einem einzigen Notebook kombinieren können.

    Mit der folgenden SQL-Abfrage können Sie die Wortzahl in Shakespeare nach dem Ausführen der vorherigen Zelle visualisieren, die die temporäre Ansicht erstellt.

    %sql
    SELECT word, SUM(word_count) AS word_count FROM words GROUP BY word ORDER BY word_count DESC LIMIT 12
    
    

    Wortzahl in Balkendiagramm für Shakespeare

    In der Zelle wird eine Apache Spark SQL-Abfrage für den DataFrame in Ihrem Databricks-Cluster ausgeführt, nicht in BigQuery. Der Vorteil dieses Ansatzes besteht darin, dass die Datenanalyse auf Apache Spark-Ebene erfolgt, keine weiteren BigQuery API-Aufrufe erfolgen und keine zusätzlichen BigQuery-Kosten entstehen.

  3. Alternativ können Sie die Ausführung einer SQL-Abfrage mit der query() API an BigQuery delegieren und für eine Reduzierung der Übertragungsgröße des resultierenden Datenframes optimieren. Anders als im vorherigen Beispiel, in dem die Verarbeitung in Apache Spark durchgeführt wurde, gelten bei diesem Ansatz Preis- und Abfrageoptimierungen für die Ausführung der Abfrage in BigQuery.

    Im folgenden Beispiel werden Scala, die query() API und das öffentliche Shakespeare-Dataset in BigQuery verwendet, um die fünf am häufigsten verwendeten Wörter in Shakespeares Werken zu berechnen. Bevor Sie den Code ausführen, müssen Sie in BigQuery ein leeres Dataset mit dem Namen mdataset erstellen, auf das der Code verweisen kann. Weitere Informationen finden Sie unter Daten in BigQuery schreiben.

    %scala
    // public dataset
    val table = "bigquery-public-data.samples.shakespeare"
    
    // existing dataset where the Google Cloud user has table creation permission
    val tempLocation = "mdataset"
    // query string
    val q = s"""SELECT word, SUM(word_count) AS word_count FROM ${table}
        GROUP BY word ORDER BY word_count DESC LIMIT 10 """
    
    // read the result of a GoogleSQL query into a DataFrame
    val df2 =
      spark.read.format("bigquery")
      .option("query", q)
      .option("materializationDataset", tempLocation)
      .load()
    
    // show the top 5 common words in Shakespeare
    df2.show(5)
    

    Weitere Codebeispiele finden Sie im BigQuery-Beispiel-Notebook für Databricks.

Daten in BigQuery schreiben

BigQuery-Tabellen sind in Datasets vorhanden. Bevor Sie Daten in eine BigQuery-Tabelle schreiben können, müssen Sie in BigQuery ein neues Dataset erstellen. So erstellen Sie ein Dataset für ein Databricks-Python-Notebook:

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    BigQuery aufrufen

  2. Maximieren Sie die Option Aktionen, klicken Sie auf Dataset erstellen und vergeben Sie dann den Namen together.

  3. Erstellen Sie im Databricks-Python-Notebook mit dem folgenden Code-Snippet einen Apache Spark-Dataframe aus einer Python-Liste mit drei Stringeinträgen:

    from pyspark.sql.types import StringType
    mylist = ["Google", "Databricks", "better together"]
    
    df = spark.createDataFrame(mylist, StringType())
    
  4. Fügen Sie Ihrem Notebook eine weitere Zelle hinzu, die den Apache Spark-DataFrame aus dem vorherigen Schritt in die BigQuery-Tabelle myTable im Dataset together schreibt. Die Tabelle wird entweder erstellt oder überschrieben. Verwenden Sie den Bucket-Namen, den Sie zuvor angegeben haben.

    bucket = YOUR_BUCKET_NAME
    table = "together.myTable"
    
    df.write
      .format("bigquery")
      .option("temporaryGcsBucket", bucket)
      .option("table", table)
      .mode("overwrite").save()
    
  5. Wenn Sie prüfen möchten, ob die Daten erfolgreich geschrieben wurden, fragen Sie Ihre BigQuery-Tabelle über den Apache Spark-DataFrame (df) ab und rufen Sie sie auf:

    display(spark.read.format("bigquery").option("table", table).load)
    

Bereinigen

Bevor Sie Databricks entfernen, sollten Sie Ihre Daten und Notebooks immer sichern. Wenn Sie Databricks bereinigen und vollständig entfernen möchten, kündigen Sie Ihr Databricks-Abo in derGoogle Cloud Console und entfernen Sie alle zugehörigen Ressourcen, die Sie in derGoogle Cloud Console erstellt haben.

Wenn Sie einen Databricks-Arbeitsbereich löschen, werden die beiden Cloud Storage-Buckets mit den Namen databricks-WORKSPACE_ID und databricks-WORKSPACE_ID-system, die von Databricks erstellt wurden, möglicherweise nicht gelöscht, wenn die Cloud Storage-Buckets nicht leer sind. Nach dem Löschen des Arbeitsbereichs können Sie diese Objekte für Ihr Projekt manuell in derGoogle Cloud Console löschen.

Nächste Schritte

Dieser Abschnitt enthält eine Liste mit zusätzlichen Dokumenten und Anleitungen: