Caricamento di dati partizionati esternamente

BigQuery può caricare i dati archiviati in Cloud Storage utilizzando un'architettura Hive di partizionamento orizzontale. Il partizionamento Hive indica che i dati esterni organizzati in più file, con una convenzione di denominazione per separare i file in diverse partizioni. Per ulteriori informazioni, vedi Layout di dati supportati.

Per impostazione predefinita, i dati non vengono partizionati in BigQuery dopo lo carichi, a meno che non crei esplicitamente un tabella partizionata.

Carica dati partizionati Hive

Per caricare i dati partizionati di Hive, scegli una delle seguenti opzioni:

Console

  1. Nella console Google Cloud, vai a BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, espandi il progetto e seleziona un set di dati.
  3. Fai clic su Visualizza azioni, e poi fai clic su Crea tabella. Viene visualizzato il riquadro Crea tabella.
  4. Nella sezione Origine, specifica i seguenti dettagli:
    1. Per Crea tabella da, seleziona Google Cloud Storage.
    2. In Seleziona file dal bucket Cloud Storage, inserisci il percorso Cartella di Cloud Storage, utilizzando i caratteri jolly. Ad esempio: my_bucket/my_files*. Il bucket Cloud Storage deve trovarsi stessa posizione del set di dati che contiene la tabella da creare, aggiungere o sovrascrivere.
    3. Seleziona il tipo di file dall'elenco Formato file.
    4. Seleziona la casella di controllo Partizionamento dei dati di origine, quindi per Seleziona Prefisso URI di origine, inserisci il prefisso URI Cloud Storage. Ad esempio: gs://my_bucket/my_files.
    5. Nella sezione Modalità di inferenza della partizione, seleziona una delle seguenti opzioni opzioni:
        .
      • Induce automaticamente i tipi: imposta la modalità di rilevamento dello schema di partizione a AUTO.
      • Tutte le colonne sono stringhe: imposta la modalità di rilevamento dello schema di partizione su STRINGS.
      • Fornisci personale: imposta la modalità di rilevamento dello schema di partizione su CUSTOM e inserisci manualmente lo schema le informazioni per le chiavi di partizione. Per ulteriori informazioni, vedi Fornisci di una chiave di partizione personalizzata.
    6. (Facoltativo) Per richiedere un filtro di partizione su tutte le query per questa tabella, Seleziona la casella di controllo Richiedi filtro di partizione. Richiesta di una partizione può ridurre i costi e migliorare il rendimento. Per ulteriori informazioni, vedi Richiesta filtri dei predicati sulle chiavi di partizione nelle query.
  5. Nella sezione Destinazione, specifica i seguenti dettagli:
      .
    1. In Progetto, seleziona il progetto in cui creare il .
    2. In Set di dati, seleziona il set di dati in cui creare il .
    3. In Tabella, inserisci il nome della tabella da creare.
    4. In Tipo di tabella, seleziona Tabella nativa .
  6. Nella sezione Schema, inserisci lo schema. definizione di Kubernetes.
  7. Per attivare il rilevamento automatico dello schema: Seleziona Rilevamento automatico.
  8. Per ignorare le righe con valori di colonna aggiuntivi che non corrispondono allo schema, espandi la sezione Opzioni avanzate e seleziona Valori sconosciuti.
  9. Fai clic su Crea tabella.

SQL

Per creare una tabella partizionata esternamente, utilizza la clausola WITH PARTITION COLUMNS dell'istruzione LOAD DATA per specificare i dettagli dello schema di partizione.

Ad esempio, vedi Caricare un file partizionato esternamente.

bq

Carica i dati partizionati di Hive utilizzando il rilevamento automatico del tipo di chiave di partizione:

bq load --source_format=ORC --hive_partitioning_mode=AUTO \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \
dataset.table gcs_uris

Carica i dati partizionati di Hive utilizzando il rilevamento della chiave di partizione di tipo stringa:

bq load --source_format=CSV --autodetect \
--hive_partitioning_mode=STRINGS \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \
dataset.table gcs_uris

Carica i dati partizionati di Hive utilizzando uno schema di chiave di partizione personalizzato codificata utilizzando il campo source\_uri\_prefix:

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

Lo schema della chiave di partizione viene codificato subito dopo l'URI di origine . Utilizza il formato seguente per specificare --hive_partitioning_source_uri_prefix:

--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/{key1:TYPE1}/{key2:TYPE2}/{key3:TYPE3}

API

Il supporto per il partizionamento Hive esiste impostando il HivePartitioningOptions il JobConfigurationLoad.

Eseguire caricamenti incrementali

Considera il seguente layout dei dati:

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

Per caricare solo i dati dal 31/10/2019:

  • Imposta la Modalità di partizionamento Hive su AUTO, STRINGS o CUSTOM.
  • Imposta il prefisso dell'URI di origine su gs://my_bucket/my_table/ per le modalità di partizionamento Hive AUTO o STRINGS. Per CUSTOM, fornire gs://my_bucket/my_table/{dt:DATE}/{val:INTEGER}.
  • Utilizza l'URI gs://my_bucket/my_table/dt=2019-10-31/*.
  • I dati vengono caricati con dt e val colonne incluse, con rispettivamente 2019-10-31 e 1.

Per caricare solo i dati da file specifici:

  • Imposta la Modalità di partizionamento Hive su AUTO, STRINGS o CUSTOM.
  • Imposta il prefisso dell'URI di origine su gs://my_bucket/my_table/ per le modalità di partizionamento Hive AUTO o STRINGS. Per CUSTOM, fornisce gs://my_bucket/my_table/{dt:DATE}/{val:INTEGER}.
  • Utilizza gli URI gs://my_bucket/my_table/dt=2017-10-31/val=3/file3,gs://my_bucket/my_table/dt=2016-10-31/val=4/file4.
  • I dati vengono caricati da entrambi i file con dt e val colonne compilate.

Schema di partizione

Le seguenti sezioni spiegano la definizione di Hive partizionato per impostazione predefinita layout e le modalità di rilevamento dello schema che BigQuery supporta.

Layout di dati supportati

Le chiavi di partizione Hive vengono visualizzate come colonne normali quando esegui query sui dati di archiviazione ideale in Cloud Storage. I dati devono seguire un layout partizionato Hive predefinito. Ad esempio, i seguenti file seguono il layout predefinito, ovvero le coppie chiave-valore sono configurate come directory con un segno di uguale (=) come separatore. e le chiavi di partizione sono sempre nello stesso ordine:

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

Il prefisso dell'URI di origine comune in questo esempio è gs://my_bucket/my_table.

Layout di dati non supportati

Se i nomi delle chiavi di partizione non sono codificati nel percorso della directory, il rilevamento dello schema di partizione non va a buon fine. Ad esempio, considera il seguente percorso, che non codifica i nomi delle chiavi di partizione:

gs://my_bucket/my_table/2019-10-31/en/my_filename

Anche i file in cui lo schema non è in un ordine coerente non riusciranno a essere rilevati. Ad esempio, considera i seguenti due file con partizione invertita codifiche delle chiavi:

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

Modalità di rilevamento

BigQuery supporta tre modalità di rilevamento dello schema di partizione Hive:

  • AUTO: i nomi e i tipi di chiavi vengono rilevati automaticamente. I seguenti tipi possono essere rilevate:

  • STRINGS: i nomi delle chiavi vengono convertiti automaticamente nel tipo STRING.

  • CUSTOM: lo schema della chiave di partizione è codificato come specificato nell'URI di origine .

Schema della chiave di partizione personalizzata

Per utilizzare uno schema CUSTOM, devi specificare lo schema nel prefisso dell'URI di origine . L'utilizzo di uno schema CUSTOM consente di specificare il tipo per ogni chiave di partizione. I valori devono essere analizzati validamente come il tipo specificato, altrimenti la query ha esito negativo.

Ad esempio, se imposti il flag source_uri_prefix su gs://my_bucket/my_table/{dt:DATE}/{val:STRING}, BigQuery tratta val come STRING, dt come DATA e utilizza gs://my_bucket/my_table come prefisso URI di origine per i file corrispondenti.

Limitazioni

  • Il supporto del partizionamento Hive viene creato assumendo un prefisso URI di origine comune per tutti gli URI che terminano immediatamente prima della codifica della partizione, come segue: gs://BUCKET/PATH_TO_TABLE/.
  • Si presume che la struttura di directory di una tabella partizionata Hive abbia lo stesso le chiavi di partizionamento vengono visualizzate nello stesso ordine, con un massimo di dieci chiavi di partizione per tabella.
  • I dati devono seguire un layout di partizionamento Hive predefinito.
  • Le chiavi di partizionamento Hive e le colonne nei file sottostanti non possono sovrapporsi.
  • L'assistenza è per Solo GoogleSQL.

  • Tutte le limitazioni per il caricamento da Cloud Storage .

Passaggi successivi