Eseguire query sui dati di Cloud Storage nelle tabelle BigLake

Questo documento descrive come eseguire query sui dati archiviati in un Tabella BigLake di Cloud Storage.

Prima di iniziare

Assicurati di avere una tabella BigLake di Cloud Storage.

Ruoli obbligatori

Per eseguire query sulle tabelle BigLake di Cloud Storage, assicurati disponi dei seguenti ruoli:

  • Visualizzatore dati BigQuery (roles/bigquery.dataViewer)
  • Utente BigQuery (roles/bigquery.user)

In base alle tue autorizzazioni, puoi concediti questi ruoli o chiedi all'amministratore per concederteli. Per ulteriori informazioni sulla concessione dei ruoli, consulta Visualizzazione dei ruoli assegnabili nelle risorse.

Per visualizzare le autorizzazioni esatte necessarie per eseguire query nelle tabelle BigLake di Cloud Storage, espandi Sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Potresti anche riuscire a ottenere queste autorizzazioni con i ruoli personalizzati. o altri ruoli predefiniti

Esegui query su tabelle BigLake

Dopo aver creato una tabella BigLake di Cloud Storage, puoi eseguire query con la sintassi GoogleSQL, come se si trattasse di una tabella BigQuery standard. Ad esempio: SELECT field1, field2 FROM mydataset.my_cloud_storage_table;.

Eseguire query su tabelle BigLake utilizzando strumenti di elaborazione dati esterni

Puoi utilizzare i connettori BigQuery con altri strumenti di elaborazione dati per accedere alle tabelle BigLake su Cloud Storage. Per ulteriori informazioni informazioni, consulta la sezione Connettori.

Apache Spark

L'esempio seguente utilizza Dataproc, ma funziona anche con qualsiasi deployment Spark utilizza Connettore Spark-BigQuery.

In questo esempio, fornisci il connettore Spark-BigQuery come inizializzazione quando crei un cluster. Questa azione consente di utilizzare un blocco note Zeppelin ed esercitare l'utente analista di dati viaggio.

Le versioni del connettore Spark-BigQuery sono elencate nel file GitHub Repository GoogleCloudDataproc/spark-bigquery-connector.

Crea un cluster a nodo singolo utilizzando l'azione di inizializzazione per Connettore Spark-BigQuery:

gcloud dataproc clusters create biglake-demo-cluster \
    --optional-components=ZEPPELIN \
    --region=REGION \
    --enable-component-gateway \
    --single-node \
    --initialization-actions gs://goog-dataproc-initialization-actions-REGION/connectors/connectors.sh \
    --metadata spark-bigquery-connector-url= gs://spark-lib/bigquery/spark-bigquery-with-dependencies_SCALA_VERSION-CONNECTOR_VERSION.jar

Apache Hive

L'esempio seguente utilizza Dataproc, ma funziona anche con qualsiasi deployment Hive che utilizza Connettore Hive-BigQuery.

In questo esempio, fornisci il connettore Hive-BigQuery come inizializzazione quando crei un cluster.

Le versioni del connettore Hive-BigQuery sono elencate nel file GitHub Repository GoogleCloudDataproc/hive-bigquery-connector.

Crea un cluster a nodo singolo utilizzando l'azione di inizializzazione per Connettore Hive-BigQuery:

gcloud dataproc clusters create biglake-hive-demo-cluster \
    --region=REGION \
    --single-node \
    --initialization-actions gs://goog-dataproc-initialization-actions-REGION/connectors/connectors.sh \
    --metadata hive-bigquery-connector-url=gs://goog-dataproc-artifacts-REGION/hive-bigquery/hive-bigquery-connector-CONNECTOR_VERSION.jar

Per ulteriori informazioni sul connettore Hive-BigQuery, consulta Utilizzare il connettore Hive-BigQuery.

Dataflow

Per leggere le tabelle BigLake da Dataflow, utilizza Dataflow in modalità DIRECT_READ per utilizzare l'API BigQuery Storage. Lettura da una stringa di query . Vedi BigQuery I/O nella documentazione di Apache Beam.

Esegui query su tabelle BigLake temporanee

È utile eseguire query su un'origine dati esterna utilizzando una tabella temporanea per query una tantum ad hoc su dati esterni o per l'estrazione, la trasformazione e il caricamento (ETL) i processi di machine learning.

Per eseguire una query su un'origine dati esterna senza creare una tabella permanente, fornisci una tabella definizione della tabella temporanea e poi utilizzarla in un comando o in una chiamata per eseguire una query sulla tabella temporanea. Puoi fornire la definizione della tabella in uno dei seguenti modi modi:

Il file di definizione della tabella o lo schema fornito vengono utilizzati per creare la tabella esterna temporanea. e la query viene eseguita sulla tabella esterna temporanea.

Quando utilizzi una tabella esterna temporanea, non ne crei una in una delle set di dati BigQuery. Poiché la tabella non è archiviata in modo permanente in un set di dati, non possono essere condivisi con altri.

Puoi creare ed eseguire query su una tabella temporanea collegata a un'origine dati esterna mediante lo strumento a riga di comando bq, l'API o le librerie client.

bq

Utilizza la Comando bq query con Flag --external_table_definition.

(Facoltativo) Fornisci il flag --location e imposta il valore su località.

Eseguire una query su una tabella temporanea collegata all'origine dati esterna utilizzando una tabella di definizione, inserisci il seguente comando.

bq --location=LOCATION query \
--external_table_definition=TABLE::DEFINITION_FILE \
'QUERY'

Sostituisci quanto segue:

  • LOCATION: il nome della tua località. Il flag --location è facoltativo. Ad esempio, se utilizzi di BigQuery nella regione di Tokyo, puoi impostare il valore del flag a asia-northeast1. Puoi impostare un valore predefinito per la località utilizzando nel file.bigqueryrc.
  • TABLE: il nome della tabella temporanea che stai creando.
  • DEFINITION_FILE: il percorso del file di definizione della tabella. sul tuo computer locale.
  • QUERY: la query che stai inviando alla tabella temporanea.

Ad esempio, il comando seguente crea ed esegue una query su una tabella temporanea denominato sales mediante un file di definizione della tabella denominato sales_def.

bq query \
--external_table_definition=sales::sales_def@us.myconnection \
'SELECT
  Region,
  Total_sales
FROM
  sales'

Per eseguire query su una tabella temporanea collegata alla tua origine dati esterna utilizzando un per la definizione dello schema incorporato, inserisci il comando seguente.

bq --location=LOCATION query \
--external_table_definition=TABLE::SCHEMA@SOURCE_FORMAT=BUCKET_PATH@projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID \
'query'

Sostituisci quanto segue:

  • LOCATION: il nome della tua località. Il flag --location è facoltativo. Ad esempio, se utilizzi di BigQuery nella regione di Tokyo, puoi impostare il valore del flag a asia-northeast1. Puoi impostare un valore predefinito per la località utilizzando nel file.bigqueryrc.
  • TABLE: il nome della tabella temporanea che stai creando.
  • SCHEMA: la definizione dello schema incorporato nel formato field:data_type,field:data_type.
  • SOURCE_FORMAT: il formato dell'origine dati esterna, ad esempio CSV.
  • BUCKET_PATH: il percorso bucket Cloud Storage che contiene i dati per nel formato gs://bucket_name/[folder_name/]file_pattern.

    Puoi selezionare più file dal bucket specificando un asterisco (*) carattere jolly nel campo file_pattern. Ad esempio: gs://mybucket/file00*.parquet. Per ulteriori informazioni le informazioni, vedi Supporto dei caratteri jolly per gli URI Cloud Storage.

    Puoi specificare più bucket per l'opzione uris fornendo più percorsi di addestramento.

    I seguenti esempi mostrano valori uris validi:

    • gs://bucket/path1/myfile.csv
    • gs://bucket/path1/*.parquet
    • gs://bucket/path1/file1*, gs://bucket1/path1/*

    Se specifichi i valori uris che hanno come target più file, questi i file devono condividere uno schema compatibile.

    Per ulteriori informazioni sull'utilizzo degli URI Cloud Storage in per BigQuery, consulta Percorso della risorsa di Cloud Storage.

  • PROJECT_ID: il progetto che contiene connessione.

  • REGION: la regione che contiene connessione attiva, ad esempio us.

  • CONNECTION_ID: il nome della connessione per ad esempio myconnection.

  • QUERY: la query che stai inviando alla tabella temporanea.

Ad esempio, il comando seguente crea ed esegue una query su una tabella temporanea denominato sales collegato a un file CSV archiviato in Cloud Storage con seguente definizione di schema: Region:STRING,Quarter:STRING,Total_sales:INTEGER.

bq query \
--external_table_definition=sales::Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=gs://mybucket/sales.csv@us.myconnection \
'SELECT
  Region,
  Total_sales
FROM
  sales'

Per eseguire una query su una tabella temporanea collegata all'origine dati esterna utilizzando un file JSON del file di schema, inserisci il comando seguente.

bq --location=LOCATION query \
--external_table_definition=SCHEMA_FILE@SOURCE_FORMAT=BUCKET_PATH@projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID \
'QUERY'

Sostituisci quanto segue:

  • LOCATION: il nome della tua località. Il flag --location è facoltativo. Ad esempio, se utilizzi di BigQuery nella regione di Tokyo, puoi impostare il valore del flag a asia-northeast1. Puoi impostare un valore predefinito per la località utilizzando nel file.bigqueryrc.
  • SCHEMA_FILE: il percorso del file di schema JSON sul tuo server in una macchina virtuale.
  • SOURCE_FORMAT: il formato dell'origine dati esterna, ad esempio CSV.
  • BUCKET_PATH: il percorso bucket Cloud Storage che contiene i dati per nel formato gs://bucket_name/[folder_name/]file_pattern.

    Puoi selezionare più file dal bucket specificando un asterisco (*) carattere jolly nel campo file_pattern. Ad esempio: gs://mybucket/file00*.parquet. Per ulteriori informazioni le informazioni, vedi Supporto dei caratteri jolly per gli URI Cloud Storage.

    Puoi specificare più bucket per l'opzione uris fornendo più percorsi di addestramento.

    I seguenti esempi mostrano valori uris validi:

    • gs://bucket/path1/myfile.csv
    • gs://bucket/path1/*.parquet
    • gs://bucket/path1/file1*, gs://bucket1/path1/*

    Se specifichi i valori uris che hanno come target più file, questi i file devono condividere uno schema compatibile.

    Per ulteriori informazioni sull'utilizzo degli URI Cloud Storage in per BigQuery, consulta Percorso della risorsa di Cloud Storage.

  • PROJECT_ID: il progetto che contiene connessione.

  • REGION: la regione che contiene connessione attiva, ad esempio us.

  • CONNECTION_ID: il nome della connessione per ad esempio myconnection.

  • QUERY: la query che stai inviando alla tabella temporanea.

Ad esempio, il comando seguente crea ed esegue una query su una tabella temporanea denominato sales e collegato a un file CSV archiviato in Cloud Storage utilizzando /tmp/sales_schema.json file di schema.

  bq query \
  --external_table_definition=sales::/tmp/sales_schema.json@CSV=gs://mybucket/sales.csv@us.myconnection \
  'SELECT
      Region,
      Total_sales
    FROM
      sales'

API

Per eseguire una query utilizzando l'API, segui questi passaggi:

  1. Crea un oggetto Job.
  2. Compila la sezione configuration dell'oggetto Job con un oggetto JobConfiguration.
  3. Compila la sezione query dell'oggetto JobConfiguration con un oggetto JobConfigurationQuery.
  4. Compila la sezione tableDefinitions dell'oggetto JobConfigurationQuery con un oggetto ExternalDataConfiguration. Specifica la connessione da utilizzare per connettersi a Cloud Storage in il campo connectionId.
  5. Chiama il metodo jobs.insert per eseguire la query in modo asincrono jobs.query metodo da eseguire la query in modo sincrono, passando l'oggetto Job.

Passaggi successivi