Verbindung zu Apache Spark herstellen
Als BigQuery-Administrator können Sie eine Verbindung erstellen, damit Datenanalysten gespeicherte Prozeduren für Apache Spark ausführen können.
Hinweise
BigQuery Connection API aktivieren.
-
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „BigQuery-Verbindungsadministrator“ (
roles/bigquery.connectionAdmin
) für das Projekt zuzuweisen, um die Berechtigungen abzurufen, die Sie zum Erstellen einer Spark-Verbindung benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
- Optional: Wenn Sie Ihre Metadaten mit Dataproc Metastore verwalten möchten, müssen Sie einen Dataproc Metastore-Dienst erstellt haben.
- Optional: Wenn Sie den Jobverlauf mit Spark History Server-Weboberflächen aufrufen möchten, müssen Sie einen Dataproc Persistent History Server (PHS) erstellt haben.
Überlegungen zum Standort
Beachten Sie Folgendes, wenn Sie einen Standort für Ihre Daten auswählen:
Multiregionen
Sie müssen Google Cloud-Ressourcen angeben, die sich im selben großen geografischen Bereich befinden:
Eine Verbindung in der Multiregion BigQuery USA kann in einer beliebigen Region im geografischen Gebiet der USA auf einen Spark History Server oder einen Dataproc Metastore verweisen, z. B.
us-central1
,us-east4
oderus-west2
.Eine Verbindung in der Multiregion BigQuery EU kann auf einen Spark History Server oder einen Dataproc Metastore in den Mitgliedsstaaten der Europäischen Union verweisen, z. B.
europe-north1
odereurope-west3
Einzelne Regionen
Eine Verbindung in einer einzelnen Region kann nur auf Google Cloud-Ressourcen in derselben Region verweisen. Beispielsweise kann eine Verbindung in der einzelnen Region us-east4
nur auf einen Spark-History Server oder einen Dataproc Metastore in us-east4
verweisen.
Verbindungen erstellen
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Klicken Sie auf
Hinzufügen und dann auf Verbindungen zu externen Datenquellen, um eine Verbindung zu erstellen.Wählen Sie in der Liste Verbindungstyp die Option Apache Spark aus.
Geben Sie im Feld Connection ID (Verbindungs-ID) einen Namen für Ihre Verbindung ein, z. B.
spark_connection
.Wählen Sie in der Liste Speicherort der Daten eine Region aus.
Sie können eine Verbindung in Regionen und Multiregionen erstellen, die BigQuery unterstützen. Weitere Informationen finden Sie unter Überlegungen zum Standort.
Optional: Wählen Sie aus der Liste Metastore-Dienst einen Dataproc Metastore aus.
Optional: Geben Sie im Feld Verlaufsservercluster einen Dataproc Persistent History Server ein.
Klicken Sie auf Verbindung erstellen.
Klicken Sie auf Zur Verbindung.
Kopieren Sie im Bereich Verbindungsinformationen die Dienstkonto-ID zur Verwendung in einem folgenden Schritt.
bq
Verwenden Sie in einer Befehlszeilenumgebung den Befehl
bq mk
, um eine Verbindung herzustellen:bq mk --connection --connection_type='SPARK' \ --properties=PROPERTIES \ --project_id=PROJECT_ID \ --location=LOCATION CONNECTION_ID
Dabei gilt:
PROPERTIES
: ein Schlüssel/Wert-Paar, das verbindungsspezifische Parameter im JSON-Format enthältBeispiel:
--properties='{ "metastoreServiceConfig": {"metastoreService": "METASTORE_SERVICE_NAME"}, "sparkHistoryServerConfig": {"dataprocCluster": "DATAPROC_CLUSTER_NAME"} }'
Dabei gilt:
METASTORE_SERVICE_NAME
: der Dataproc Metastore mit einer gRPC-Netzwerkkonfiguration, z. B.projects/my-project-id/locations/us-central1/services/my-service
Weitere Informationen zum Zugriff auf die gespeicherten Hive-Metastore-Metadaten mit einem Endpunktprotokoll
DATAPROC_CLUSTER_NAME
: die Konfiguration des Spark-Verlaufsservers, z. B.projects/my-project-id/regions/us-central1/clusters/my-cluster
Weitere Informationen finden Sie unter Cluster von Persistent History Server erstellen.
PROJECT_ID
: Ihre Google Cloud-Projekt-IDLOCATION
: der Standort, an dem Sie die Verbindung speichern möchten, z. B.US
CONNECTION_ID
: die Verbindungs-ID, z. B.myconnection
.Wenn Sie sich Verbindungsdetails in der Google Cloud Console ansehen, ist die Verbindungs-ID der Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID, der unter Verbindungs-ID angezeigt wird, z. B.
projects/.../locations/.../connections/myconnection
.
Rufen Sie die Dienstkonto-ID ab und kopieren Sie sie, da Sie sie in einem anderen Schritt benötigen:
bq show --location=LOCATION --connection PROJECT_ID.LOCATION.CONNECTION_ID
Die Ausgabe sieht in etwa so aus:
Connection myproject.us.myconnection name type properties ---------------------- ------- --------------------------------------------------- myproject.us.myconnection SPARK {"serviceAccountId": "bqserver@example.iam.gserviceaccount.com"}
Weitere Informationen zum Verwalten von Verbindungen finden Sie unter Verbindungen verwalten.
Zugriff auf das Dienstkonto gewähren
Damit ein gespeichertes Verfahren für Apache Spark auf Ihre Google Cloud-Ressourcen zugreifen kann, müssen Sie dem der Verbindung des gespeicherten Verfahrens zugeordneten Dienstkonto die erforderlichen IAM-Berechtigungen erteilen. Alternativ können Sie Ihr benutzerdefiniertes Dienstkonto für den Datenzugriff verwenden.
Zum Lesen und Schreiben von Daten aus und in BigQuery müssen Sie dem Dienstkonto die folgenden IAM-Berechtigungen erteilen:
bigquery.tables.*
für Ihre BigQuery-Tabellenbigquery.readsessions.*
für Ihr Projekt
Die IAM-Rolle
roles/bigquery.admin
enthält die Berechtigungen, die das Dienstkonto benötigt, um Daten aus und in BigQuery zu lesen und zu schreiben.Zum Lesen und Schreiben von Daten in und aus Cloud Storage müssen Sie dem Dienstkonto die Berechtigung
storage.objects.*
für Ihre Cloud Storage-Objekte erteilen.Die IAM-Rolle
roles/storage.objectAdmin
enthält die Berechtigungen, die das Dienstkonto benötigt, um Daten aus und in Cloud Storage zu lesen und zu schreiben.Wenn Sie Dataproc Metastore beim Erstellen einer Verbindung angeben, muss BigQuery dem Dienstkonto die Berechtigung
metastore.services.get
in Ihrem Dataproc Metastore erteilen, damit Details zur Metaspeicherkonfiguration abgerufen werden können.Die vordefinierte Rolle
roles/metastore.metadataViewer
enthält die Berechtigung, die das Dienstkonto benötigt, um Details zur Metaspeicherkonfiguration abzurufen.Sie müssen dem Dienstkonto auch die Rolle
roles/storage.objectAdmin
für den Cloud Storage-Bucket zuweisen, damit Ihre gespeicherte Prozedur auf das Hive-Warehouse-Verzeichnis Ihres Dataproc Metastores (hive.metastore.warehouse.dir
) zugreifen kann. Wenn Ihre gespeicherte Prozedur Vorgänge im Metastore ausführt, müssen Sie möglicherweise zusätzliche Berechtigungen erteilen. Weitere Informationen zu IAM-Rollen und Berechtigungen in Dataproc Metastore finden Sie unter Vordefinierte Rollen und Berechtigungen für Dataproc Metastore.Wenn Sie einen Dataproc Persistent History Server angeben, wenn Sie eine Verbindung erstellen, müssen Sie dem Dienstkonto die folgenden Rollen zuweisen:
- Die Rolle
roles/dataproc.viewer
auf Ihrem Dataproc Persistent History Server, die die Berechtigungdataproc.clusters.get
enthält. - Die Rolle
roles/storage.objectAdmin
im Cloud Storage-Bucket, die Sie beim Erstellen des Dataproc Persistent History Server für das Attributspark:spark.history.fs.logDirectory
angeben.
Weitere Informationen finden Sie unter Dataproc Persistent History Server und Dataproc-Rollen und -Berechtigungen.
- Die Rolle
Verbindungen für Nutzer freigeben
Sie können die folgenden Rollen zuweisen, damit Nutzer Daten abfragen und Verbindungen verwalten können:
roles/bigquery.connectionUser
: Nutzer können Verbindungen nutzen, um sich mit externen Datenquellen zu verbinden und diese abzufragen.roles/bigquery.connectionAdmin
: Nutzer können Verbindungen verwalten.
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Verbindungen werden in Ihrem Projekt in einer Gruppe namens Externe Verbindungen aufgeführt.
Klicken Sie im Bereich Explorer auf Ihren Projektnamen > Externe Verbindungen > Verbindung.
Klicken Sie im Bereich Details auf Freigeben, um eine Verbindung freizugeben. Führen Sie anschließend folgende Schritte aus:
Geben Sie im Dialogfeld Verbindungsberechtigungen die Verbindung für andere Hauptkonten frei, indem Sie Hauptkonten hinzufügen oder bearbeiten.
Klicken Sie auf Speichern.
bq
Sie können keine Verbindung mit dem bq-Befehlszeilentool freigeben. Verwenden Sie zum Freigeben einer Verbindung die Google Cloud Console oder die Methode der BigQuery Connections API.
API
Verwenden Sie die Methode projects.locations.connections.setIAM
in dem Referenzabschnitt zur BigQuery Connections REST API und geben Sie eine Instanz der Ressource policy
an.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Nächste Schritte
- Weitere Informationen zu verschiedenen Verbindungstypen
- Verbindungen verwalten
- Gespeicherte Prozedur für Apache Spark erstellen
- Gespeicherte Verfahren verwalten