Extern partitionierte Daten laden
BigQuery kann Daten, die in Cloud Storage gespeichert sind, über ein Layout mit Hive-Partitionierung laden. Hive-Partitionierung bedeutet, dass die externen Daten in mehreren Dateien organisiert sind, wobei sie mithilfe einer bestimmten Namenskonvention in verschiedene Partitionen aufgeteilt werden. Weitere Informationen finden Sie unter Unterstützte Datenlayouts.
Standardmäßig werden die Daten nach dem Laden in BigQuery nicht partitioniert, sofern Sie nicht explizit eine partitionierte Tabelle erstellen.
Partitionierte Hive-Daten laden
Wählen Sie eine der folgenden Optionen aus, um partitionierte Hive-Daten zu laden:
Console
Wechseln Sie in der Google Cloud Console zu BigQuery.
- Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.
- Klicken Sie auf Aktionen ansehen und dann auf Tabelle erstellen. Der Bereich Tabelle erstellen wird geöffnet.
- Geben Sie im Bereich Quelle die folgenden Details an:
- Wählen Sie unter Tabelle erstellen aus die Option Google Cloud Storage aus.
- Geben Sie unter Datei aus Cloud Storage-Bucket auswählen den Pfad zum Cloud Storage-Ordner mithilfe von Platzhaltern ein.
Beispiel:
my_bucket/my_files*
Der Cloud Storage-Bucket muss sich am selben Standort wie das Dataset befinden, das die Tabelle enthält, die Sie erstellen, anhängen oder überschreiben möchten. - Wählen Sie in der Liste Dateiformat den Dateityp aus.
- Klicken Sie auf das Kästchen Quelldatenpartitionierung und geben Sie dann für Quell-URI-Präfix auswählen das Cloud Storage-URI-Präfix ein. Beispiel:
gs://my_bucket/my_files
- Wählen Sie im Bereich Partitionsinferenzmodus eine der folgenden Optionen aus:
- Typen automatisch ableiten: Legen Sie den Erkennungsmodus des Partitionsschemas auf
AUTO
fest. - Alle Spalten sind Strings: Legen Sie den Modus für die Erkennung des Partitionsschemas auf
STRINGS
fest. - Eigene bereitstellen: Legen Sie den Erkennungsmodus für das Partitionsschema auf
CUSTOM
fest und geben Sie die Schemainformationen für die Partitionierungsschlüssel manuell ein. Weitere Informationen finden Sie unter Benutzerdefiniertes Partitionierungsschlüsselschema bereitstellen.
- Typen automatisch ableiten: Legen Sie den Erkennungsmodus des Partitionsschemas auf
- Optional: Wenn Sie einen Partitionsfilter für alle Abfragen für diese Tabelle benötigen, klicken Sie das Kästchen Partitionsfilter anfordern an. Der Partitionsfilter, den Sie dadurch obligatorisch machen, kann die Kosten senken und die Leistung verbessern. Weitere Informationen finden Sie unter Prädikatfilter für Partitionsschlüssel in Abfragen erforderlich.
- Geben Sie im Bereich Ziel die folgenden Details an:
- Wählen Sie unter Projekt das Projekt aus, in dem Sie die Tabelle erstellen möchten.
- Wählen Sie bei Dataset das Dataset aus, in dem Sie die Tabelle erstellen möchten.
- Geben Sie unter Tabelle den Namen der Tabelle ein, die Sie erstellen möchten.
- Wählen Sie als Tabellentyp die Option Native Tabelle aus.
- Geben Sie im Abschnitt Schema die Schemadefinition ein.
- Wählen Sie Automatisch erkennen aus, um die automatische Erkennung des Schemas zu aktivieren.
- Wenn Sie Zeilen mit zusätzlichen Spaltenwerten ignorieren möchten, die nicht mit dem Schema übereinstimmen, maximieren Sie den Abschnitt Erweiterte Optionen und wählen Sie Unbekannte Werte aus.
- Klicken Sie auf Tabelle erstellen.
SQL
Zum Erstellen einer extern partitionierten Tabelle verwenden Sie die Klausel WITH PARTITION COLUMNS
der LOAD DATA
-Anweisung, um die Details des Partitionsschemas anzugeben.
Ein Beispiel finden Sie unter Extern partitionierte Datei laden.
bq
Laden Sie partitionierte Hive-Daten mit der automatischen Erkennung des Partitionsschlüsseltyps:
bq load --source_format=ORC --hive_partitioning_mode=AUTO \ --hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \ dataset.table gcs_uris
Laden Sie partitionierte Hive-Daten mit der Erkennung von Partitionsschlüsseln des Typs „String“:
bq load --source_format=CSV --autodetect \ --hive_partitioning_mode=STRINGS \ --hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \ dataset.table gcs_uris
Laden Sie partitionierte Hive-Daten mit einem benutzerdefinierten Partitionsschlüsselschema, das mit dem Feld source\_uri\_prefix
codiert ist:
bq load --source_format=JSON --hive_partitioning_mode=CUSTOM \ --hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/partition_key_schema \ dataset.table gcs_uris file_schema
Das Schema für den Partitionierungsschlüssel wird unmittelbar nach dem Präfix des Quell-URI codiert. Geben Sie --hive_partitioning_source_uri_prefix
im folgenden Format an:
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/{key1:TYPE1}/{key2:TYPE2}/{key3:TYPE3}
API
Die Hive-Partitionierung wird unterstützt, wenn die HivePartitioningOptions
in JobConfigurationLoad
festgelegt werden.
Inkrementelle Ladevorgänge ausführen
Sehen Sie sich das folgende Datenlayout an:
gs://my_bucket/my_table/dt=2019-10-31/val=1/file1
gs://my_bucket/my_table/dt=2018-10-31/val=2/file2
gs://my_bucket/my_table/dt=2017-10-31/val=3/file3
gs://my_bucket/my_table/dt=2016-10-31/val=4/file4
So laden Sie nur Daten vom 31.10.2019:
- Legen Sie den Hive-Partitionierungsmodus auf
AUTO
,STRINGS
oderCUSTOM
fest. - Legen Sie das Quell-URI-Präfix auf
gs://my_bucket/my_table/
für die Hive-PartitionierungsmodiAUTO
oderSTRINGS
fest. Geben Sie für CUSTOMgs://my_bucket/my_table/{dt:DATE}/{val:INTEGER}
an. - Verwenden Sie den URI
gs://my_bucket/my_table/dt=2019-10-31/*
. - Die Daten werden mit den Spalten
dt
undval
sowie den entsprechenden Werten2019-10-31
und1
geladen.
So laden Sie nur Daten aus bestimmten Dateien:
- Legen Sie den Hive-Partitionierungsmodus auf
AUTO
,STRINGS
oderCUSTOM
fest. - Legen Sie das Quell-URI-Präfix auf
gs://my_bucket/my_table/
für die Hive-PartitionierungsmodiAUTO
oderSTRINGS
fest. Geben Sie fürCUSTOM
den Wertgs://my_bucket/my_table/{dt:DATE}/{val:INTEGER}
an. - Verwenden Sie die URIs
gs://my_bucket/my_table/dt=2017-10-31/val=3/file3,gs://my_bucket/my_table/dt=2016-10-31/val=4/file4
. - Die Daten werden aus beiden Dateien mit den ausgefüllten Spalten
dt
undval
geladen.
Partitionsschema
In den folgenden Abschnitten werden das standardmäßige Hive-partitionierte Layout und die von BigQuery unterstützten Schemaerkennungsmodi erläutert.
Unterstützte Datenlayouts
Hive-Partitionsschlüssel werden als normale Spalten angezeigt, wenn Sie Daten aus Cloud Storage abfragen. Die Daten müssen einem Standardlayout für Hive-Partitionierung entsprechen. Die folgenden Dateien folgen beispielsweise dem Standardlayout. Die Schlüssel/Wert-Paare werden als Verzeichnisse mit dem Gleichzeichen (=) als Trennzeichen konfiguriert und die Partitionierungsschlüssel haben immer dieselbe Reihenfolge:
gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/dt=2018-10-31/lang=fr/my_filename
Das gemeinsame Präfix für den Quell-URI in diesem Beispiel ist gs://my_bucket/my_table
.
Nicht unterstützte Datenlayouts
Wenn die Namen der Partitionierungsschlüssel nicht im Verzeichnispfad codiert sind, schlägt die Partitionierung des Partitionsschemas fehl. Sehen Sie sich zum Beispiel den folgenden Pfad an, in dem die Namen der Partitionsschlüssel nicht codiert sind:
gs://my_bucket/my_table/2019-10-31/en/my_filename
Dateien, deren Schema nicht in einheitlicher Reihenfolge angegeben ist, werden ebenfalls nicht erkannt. Sehen Sie sich zum Beispiel die folgenden beiden Dateien an, bei denen die Partitionierungsschlüssel in umgekehrter Reihenfolge codiert sind:
gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/lang=fr/dt=2018-10-31/my_filename
Erkennungsmodi
BigQuery unterstützt drei Arten der Erkennung von Hive-Partitionsschemas:
AUTO
: Schlüsselnamen und -typen werden automatisch erkannt. Die folgenden Typen können erkannt werden:STRINGS
: Schlüsselnamen werden automatisch in den TypSTRING
konvertiert.CUSTOM
: Das Schema des Partitionierungsschlüssels ist entsprechend der Angabe im Präfix des Quell-URI codiert.
Benutzerdefiniertes Schema für Partitionierungsschlüssel
Wenn Sie ein CUSTOM
-Schema verwenden möchten, müssen Sie das Schema im Feld für das Quell-URI-Präfix angeben. Mit einem CUSTOM
-Schema können Sie den Typ für jeden Partitionierungsschlüssel angeben.
Wenn sich die Werte nicht korrekt als der angegebene Typ parsen lassen, tritt beim Laden ein Fehler auf.
Wenn Sie beispielsweise das Flag source_uri_prefix
auf gs://my_bucket/my_table/{dt:DATE}/{val:STRING}
setzen, behandelt BigQuery val
als STRING, dt
als DATE und verwendet gs://my_bucket/my_table
als Quell-URI-Präfix für die übereinstimmenden Dateien
Beschränkungen
- Bei der Unterstützung der Hive-Partitionierung wird vorausgesetzt, dass alle URI unmittelbar vor der Partitionscodierung ein gemeinsames Präfix für den Quell-URI haben:
gs://BUCKET/PATH_TO_TABLE/
. - Es wird angenommen, dass in der Verzeichnisstruktur einer Hive-partitionierten Tabelle dieselben Partitionierungsschlüssel in derselben Reihenfolge vorhanden sind. In einer Tabelle darf es dabei höchstens zehn Partitionierungsschlüssel geben.
- Die Daten müssen einem Standardlayout für Hive-Partitionierung entsprechen.
- Es darf keine Überschneidungen zwischen den Hive-Partitionierungsschlüsseln und den Spalten in den zugrunde liegenden Dateien geben.
Die Unterstützung gilt nur für GoogleSQL.
Es gelten alle Beschränkungen für das Laden aus Cloud Storage.