Föderierte AWS Glue-Datasets erstellen
In diesem Dokument wird beschrieben, wie Sie ein föderiertes Dataset in BigQuery erstellen, das mit einer vorhandenen Datenbank in AWS Glue verknüpft ist.
Ein Verbunddataset ist eine Verbindung zwischen BigQuery und einer externen Datenquelle auf Dataset-Ebene. Die Tabellen in einem föderierten Dataset werden automatisch aus den Tabellen in der entsprechenden externen Datenquelle gefüllt. Sie können diese Tabellen direkt in BigQuery abfragen, aber keine Änderungen vornehmen, etwas hinzufügen oder löschen. Alle Änderungen, die Sie an der externen Datenquelle vornehmen, werden jedoch automatisch in BigQuery übernommen.
Hinweise
Sie benötigen eine Verbindung, um auf AWS Glue-Daten zuzugreifen.
Folgen Sie der Anleitung unter Verbindung zu Amazon S3 herstellen, um eine Verbindung zu erstellen oder zu ändern. Wenn Sie diese Verbindung erstellen, fügen Sie die folgende Richtlinienanweisung für AWS Glue in Ihre AWS-Identitäts- und Zugriffsverwaltungsrichtlinie für BigQuery ein. Fügen Sie diese Anweisung zusätzlich zu den anderen Berechtigungen für den Amazon S3-Bucket ein, in dem die Daten in Ihren AWS Glue-Tabellen gespeichert sind.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTable", "glue:GetTables", "glue:GetPartitions" ], "Resource": [ "arn:aws:glue:REGION:ACCOUNT_ID:catalog", "arn:aws:glue:REGION:ACCOUNT_ID:database/DATABASE_NAME", "arn:aws:glue:REGION:ACCOUNT_ID:table/DATABASE_NAME/*" ] }
Ersetzen Sie Folgendes:
REGION
: durch die AWS-Region, z. B.us-east-1
ACCOUNT_ID:
: Geben Sie die 12-stellige AWS-Konto-ID einDATABASE_NAME
: der Name der AWS Glue-Datenbank
Erforderliche Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle BigQuery-Administrator (roles/bigquery.admin
) zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines föderierten Datasets benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen eines föderierten Datasets erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Erstellen eines föderierten Datensatzes erforderlich:
-
bigquery.datasets.create
-
bigquery.connections.use
-
bigquery.connections.delegate
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Einführung in IAM.
Föderiertes Dataset erstellen
So erstellen Sie ein Föderation-Dataset:
Console
Öffnen Sie in der Google Cloud Console die Seite „BigQuery“.
Klicken Sie im linken Bereich auf
Explorer:Wenn Sie den linken Bereich nicht sehen, klicken Sie auf
Linken Bereich maximieren, um ihn zu öffnen.Wählen Sie im Bereich Explorer das Projekt aus, in dem Sie das Dataset erstellen möchten.
Klicken Sie auf
Aktionen ansehen und dann auf Dataset erstellen.Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:
- Geben Sie für die Dataset-ID einen eindeutigen Dataset-Namen ein.
- Wählen Sie unter Standorttyp einen AWS-Standort für das Dataset aus, z. B.
aws-us-east-1
. Nachdem Sie ein Dataset erstellt haben, kann der Standort nicht mehr geändert werden. Gehen Sie für Externes Dataset so vor:
- Klicken Sie auf das Kästchen neben Link zu einem externen Dataset.
- Wählen Sie für Typ des externen Datasets die Option
AWS Glue
aus. - Geben Sie für Externe Quelle
aws-glue://
gefolgt vom Amazon-Ressourcennamen (ARN) der AWS Glue-Datenbank ein, z. B.aws-glue://arn:aws:glue:us-east-1:123456789:database/test_database
. - Wählen Sie unter Verbindungs-ID Ihre AWS-Verbindung aus.
Übernehmen Sie die anderen Einstellungen.
Klicken Sie auf Dataset erstellen.
SQL
Verwenden Sie die Datendefinitionssprachen-Anweisung (DDL) CREATE EXTERNAL SCHEMA
.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE EXTERNAL SCHEMA DATASET_NAME WITH CONNECTION PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME OPTIONS ( external_source = 'AWS_GLUE_SOURCE', location = 'LOCATION');
Ersetzen Sie Folgendes:
DATASET_NAME
: der Name Ihres neuen Datasets in BigQuery.PROJECT_ID
: Ihre Projekt-ID.CONNECTION_LOCATION
: der Speicherort Ihrer AWS-Verbindung, z. B.aws-us-east-1
.CONNECTION_NAME
: der Name Ihrer AWS-Verbindung.AWS_GLUE_SOURCE
: der Amazon Resource Name (ARN) der AWS Glue-Datenbank mit einem Präfix, das die Quelle identifiziert, z. B.aws-glue://arn:aws:glue:us-east-1:123456789:database/test_database
.LOCATION
: der Speicherort Ihres neuen Datasets in BigQuery, z. B.aws-us-east-1
. Nachdem Sie ein Dataset erstellt haben, können Sie seinen Standort nicht mehr ändern.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Erstellen Sie in einer Befehlszeilenumgebung ein Dataset mit dem Befehl bq mk
:
bq --location=LOCATION mk --dataset \ --external_source aws-glue://AWS_GLUE_SOURCE \ --connection_id PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME \ DATASET_NAME
Ersetzen Sie Folgendes:
LOCATION
: der Standort Ihres neuen Datasets in BigQuery, z. B.aws-us-east-1
. Nachdem Sie ein Dataset erstellt haben, können Sie seinen Standort nicht mehr ändern. Mit der Datei.bigqueryrc
können Sie einen Standardwert für den Standort festlegen.AWS_GLUE_SOURCE
: der Amazon Resource Name (ARN) der AWS Glue-Datenbank, z. B.arn:aws:glue:us-east-1:123456789:database/test_database
.PROJECT_ID
: Ihre BigQuery-Projekt-ID.CONNECTION_LOCATION
: der Standort Ihrer AWS-Verbindung, z. B.aws-us-east-1
.CONNECTION_NAME
: der Name Ihrer AWS-Verbindung.DATASET_NAME
: der Name Ihres neuen Datasets in BigQuery. Wenn Sie ein Dataset in einem anderen Projekt als dem Standardprojekt erstellen möchten, fügen Sie die Projekt-ID im FormatPROJECT_ID
:DATASET_NAME
dem Dataset-Namen hinzu.
Terraform
Verwenden Sie die Ressource google_bigquery_dataset
:
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Im folgenden Beispiel wird ein föderiertes AWS Glue-Dataset erstellt:
resource "google_bigquery_dataset" "dataset" { provider = google-beta dataset_id = "example_dataset" friendly_name = "test" description = "This is a test description." location = "aws-us-east-1" external_dataset_reference { external_source = "aws-glue://arn:aws:glue:us-east-1:999999999999:database/database" connection = "projects/project/locations/aws-us-east-1/connections/connection" } }
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
API
Rufen Sie
datasets.insert
Methode mit einem definierten Dataset-Ressource und externalDatasetReference
Feld für Ihre AWS Glue-Datenbank auf.
Tabellen in einem föderierten Dataset auflisten
Informationen zum Auflisten der Tabellen, die in Ihrem föderierten Dataset für Abfragen verfügbar sind, finden Sie unter Datasets auflisten.
Tabelleninformationen abrufen
Informationen zu den Tabellen in Ihrem föderierten Datenpool, z. B. Schemadetails, finden Sie unter Tabelleninformationen abrufen.
Zugriff auf Tabellen steuern
Informationen zum Verwalten des Zugriffs auf die Tabellen in Ihrem föderierten Datenpool finden Sie unter Zugriff auf Ressourcen mit IAM steuern.
Sicherheit auf Zeilenebene, Sicherheit auf Spaltenebene und Datenmaskierung werden auch für Tabellen in föderierten Datasets unterstützt.
Schemavorgänge, die Sicherheitsrichtlinien ungültig machen können, z. B. das Löschen einer Spalte in AWS Glue, können dazu führen, dass Jobs fehlschlagen, bis die Richtlinien aktualisiert wurden. Wenn Sie eine Tabelle in AWS Glue löschen und neu erstellen, gelten Ihre Sicherheitsrichtlinien nicht mehr für die neu erstellte Tabelle.
AWS Glue-Daten abfragen
Tabellen in föderierten Datasets abzufragen ist dasselbe wie das Abfragen von Tabellen in anderen BigQuery-Datasets.
Sie können AWS Glue-Tabellen in den folgenden Formaten abfragen:
- CSV (komprimiert und unkomprimiert)
- JSON (komprimiert und unkomprimiert)
- Parquet
- ORC
- Avro
- Iceberg
- Delta Lake
Details zur Tabellenzuordnung
Jede Tabelle, auf die Sie in Ihrer AWS Glue-Datenbank Zugriff gewähren, wird als equivalente Tabelle in Ihrem BigQuery-Dataset angezeigt.
Format
Das Format jeder BigQuery-Tabelle wird durch die folgenden Felder der jeweiligen AWS Glue-Tabelle bestimmt:
InputFormat
(Table.StorageDescriptor.InputFormat
)OutputFormat
(Table.StorageDescriptor.OutputFormat
)SerializationLib
(Table.StorageDescriptor.SerdeInfo.SerializationLibrary
)
Die einzige Ausnahme sind Iceberg-Tabellen, bei denen das Feld TableType
(Table.Parameters["table_type"]
) verwendet wird.
Eine AWS Glue-Tabelle mit den folgenden Feldern wird beispielsweise einer ORC-Tabelle in BigQuery zugeordnet:
InputFormat
="org.apache.hadoop.hive.ql.io.orc.OrcInputFormat"
OutputFormat
="org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat"
SerializationLib
="org.apache.hadoop.hive.ql.io.orc.OrcSerde"
Standort
Der Speicherort jeder BigQuery-Tabelle wird durch Folgendes bestimmt:
- Iceberg-Tabellen: das Feld
Table.Parameters["metadata_location"]
in der AWS Glue-Tabelle - Nicht partitionierte Tabellen, die nicht von Iceberg stammen: das Feld
Table.StorageDescriptor.Location
in der AWS Glue-Tabelle - Partitionierte Tabellen, die nicht von Iceberg stammen: die AWS Glue GetPartitions API
Weitere Eigenschaften
Außerdem werden einige AWS Glue-Tabelleneigenschaften automatisch formatabhängigen Optionen in BigQuery zugeordnet:
Format | SerializationLib | AWS Glue-Tabellenwert | BigQuery-Option |
---|---|---|---|
CSV | LazySimpleSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["field.delim"] | CsvOptions.fieldDelimiter |
CSV | LazySimpleSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | CsvOptions.encoding |
CSV | LazySimpleSerDe | Table.StorageDescriptor.Parameters["skip.header.line.count"] | CsvOptions.skipLeadingRows |
CSV | OpenCsvSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["separatorChar"] | CsvOptions.fieldDelimiter |
CSV | OpenCsvSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["quoteChar"] | CsvOptions.quote |
CSV | OpenCsvSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | CsvOptions.encoding |
CSV | OpenCsvSerDe | Table.StorageDescriptor.Parameters["skip.header.line.count"] | CsvOptions.skipLeadingRows |
JSON | Hive JsonSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | JsonOptions.encoding |
Ansicht in einem föderierten Dataset erstellen
Sie können keine Ansicht in einem föderierten Dataset erstellen. Sie können jedoch eine Ansicht in einem Standard-Dataset erstellen, die auf einer Tabelle in einem föderierten Dataset basiert. Weitere Informationen finden Sie unter Ansichten erstellen.
Föderiertes Dataset löschen
Das Löschen eines föderierten Datasets entspricht dem Löschen eines beliebigen anderen BigQuery-Datasets. Weitere Informationen finden Sie unter Datasets löschen.
Preise
Informationen zu den Preisen finden Sie unter BigQuery-Omni-Preise.
Beschränkungen
- Es gelten alle BigQuery Omni-Einschränkungen.
- Sie können in Tabellen in einem föderierten AWS Glue-Dataset keine Daten oder Metadaten hinzufügen, löschen oder aktualisieren.
- Sie können in einem föderierten AWS Glue-Dataset keine neuen Tabellen, Ansichten oder materialisierten Ansichten erstellen.
INFORMATION_SCHEMA
-Aufrufe werden nicht unterstützt.- Metadaten-Caching wird nicht unterstützt.
- Einstellungen auf Dataset-Ebene, die sich auf Standardeinstellungen für die Tabellenerstellung beziehen, wirken sich nicht auf föderierte Datasets aus, da Tabellen nicht manuell erstellt werden können.
- Der Apache Hive-Datentyp
UNION
wird für Avro-Tabellen nicht unterstützt. - Es gelten die Einschränkungen für externe Tabellen.
Nächste Schritte
- Weitere Informationen zu BigQuery Omni
- Probieren Sie das Lab BigQuery Omni mit AWS-Lab aus.