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 föderiertes Dataset 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 ausgefüllt. Sie können diese Tabellen direkt in BigQuery abfragen, aber keine Änderungen vornehmen, etwas hinzufügen oder löschen. Alle Aktualisierungen, die Sie in der externen Datenquelle vornehmen, werden jedoch automatisch in BigQuery übernommen.

Hinweise

Sie benötigen eine Verbindung, um auf AWS Glue-Daten zuzugreifen.

  • Informationen zum Erstellen oder Ändern einer Verbindung finden Sie unter Verbindung zu Amazon S3 herstellen. Fügen Sie dabei die folgende zusätzliche Richtlinienanweisung für AWS Glue in Ihre AWS-Identitäts- und Zugriffsverwaltungsrichtlinie für BigQuery hinzu:

    {
     "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: die AWS-Region, z. B. us-east-1
    • ACCOUNT_ID:: die 12-stellige AWS-Konto-ID
    • DATABASE_NAME: der Name der AWS Glue-Datenbank

Erforderliche Berechtigungen

Bitten Sie Ihren Administrator, Ihnen den IAM-Rolle BigQuery-Administrator (roles/bigquery.admin) zu gewähren, 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 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 Datasets 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öderiertes Dataset:

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 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. Mit der Datei .bigqueryrc können Sie einen Standardwert für den Standort festlegen.
  • AWS_GLUE_SOURCE ist 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 ist 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 Format PROJECT_ID:DATASET_NAME dem Dataset-Namen hinzu.

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 für die Abfrage in Ihrem föderierten Dataset verfügbar sind, finden Sie unter Datasets auflisten.

Tabelleninformationen abrufen

Informationen zu den Tabellen in Ihrem föderierten Dataset, z. B. Schemadetails, finden Sie unter Tabelleninformationen abrufen.

Zugriff auf Tabellen steuern

Informationen zum Verwalten des Zugriffs auf die Tabellen in Ihrem föderierten Dataset finden Sie unter Zugriff auf Ressourcen mit IAM steuern.

AWS Glue-Daten abfragen

Das Abfragen von Tabellen in föderierten Datasets ist mit dem Abfragen von Tabellen in einem anderen BigQuery-Dataset identisch.

Sie können AWS Glue-Tabellen in den folgenden Formaten abfragen:

  • CSV (komprimiert und unkomprimiert)
  • JSON (komprimiert und unkomprimiert)
  • Parquet
  • ORC
  • Avro
  • Iceberg

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, die das Feld TableType (Table.Parameters["table_type"]) verwenden.

Beispielsweise wird eine AWS Glue-Tabelle mit den folgenden Feldern 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: 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 Nicht-Iceberg-Tabellen: AWS Glue GetPartitions API

Weitere Eigenschaften

Außerdem werden einige AWS Glue-Tabellenattribute automatisch formatspezifischen 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 in einem föderierten Dataset keine Ansicht erstellen. Sie haben aber die Möglichkeit, eine Ansicht in einem Standard-Dataset zu erstellen, die auf einer Tabelle in einem föderierten Dataset basiert. Weitere Informationen finden Sie unter Ansichten erstellen.

Föderiertes Dataset löschen

Ein föderiertes Dataset wird genauso gelöscht wie ein anderes BigQuery-Dataset. Weitere Informationen finden Sie unter Datasets löschen.

Preise

Informationen zu den Preisen finden Sie unter BigQuery-Omni-Preise.

Beschränkungen

Nächste Schritte