Utilizza BigLake Metastore con Dataproc Serverless

Questo documento spiega come utilizzare BigLake Metastore con Dataproc Serverless.

Prima di iniziare

  1. Abilita la fatturazione per il tuo progetto Google Cloud . Scopri come verificare se la fatturazione è abilitata per un progetto.
  2. Abilita le API BigQuery e Dataproc.

    Abilita le API

  3. (Facoltativo) Scopri come funziona BigLake Metastore e perché dovresti utilizzarlo.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per utilizzare Spark e Dataproc Serverless con BigLake Metastore come archivio di metadati, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Flusso di lavoro generale

Per utilizzare BigQuery con Dataproc Serverless, segui questi passaggi generali:

  1. Crea un file con i comandi che vuoi eseguire in BigLake Metastore.
  2. Connettiti al motore software open source che preferisci.
  3. Invia un job batch utilizzando il metodo che preferisci, ad esempio Spark SQL o PySpark.

Connettere BigLake Metastore a Spark

Le seguenti istruzioni mostrano come connettere Dataproc Serverless a BigLake Metastore:

SparkSQL

Per inviare un job batch Spark SQL, completa i seguenti passaggi.

  1. Crea un file SQL con i comandi Spark SQL che vuoi eseguire in BigLake Metastore. Ad esempio, questo comando crea uno spazio dei nomi e una tabella.

    CREATE NAMESPACE `CATALOG_NAME`.NAMESPACE_NAME;
    CREATE TABLE `CATALOG_NAME`.NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG LOCATION 'WAREHOUSE_DIRECTORY';

    Sostituisci quanto segue:

    • CATALOG_NAME: il nome del catalogo che fa riferimento alla tabella Spark.
    • NAMESPACE_NAME: il nome dello spazio dei nomi che fa riferimento alla tabella Spark.
    • TABLE_NAME: un nome di tabella per la tabella Spark.
    • WAREHOUSE_DIRECTORY: l'URI della cartella Cloud Storage in cui è archiviato il data warehouse.
  2. Invia un job batch Spark SQL eseguendo il seguente comando gcloud dataproc batches submit spark-sql gcloud CLI:

    gcloud dataproc batches submit spark-sql SQL_SCRIPT_PATH \
    --project=PROJECT_ID \
    --region=REGION \
    --subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
    --deps-bucket=BUCKET_PATH \
    --properties="spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,spark.sql.catalog.CATALOG_NAME.catalog-impl=org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog,spark.sql.catalog.CATALOG_NAME.gcp_project=PROJECT_ID,spark.sql.catalog.CATALOG_NAME.gcp_location=LOCATION,spark.sql.catalog.CATALOG_NAME.warehouse=WAREHOUSE_DIRECTORY"

    Sostituisci quanto segue:

    • SQL_SCRIPT_PATH: il percorso del file SQL utilizzato dal job batch.
    • PROJECT_ID: l'ID del Google Cloud progetto in cui eseguire il job batch.
    • REGION: la regione in cui viene eseguito il tuo workload.
    • SUBNET_NAME: facoltativo: il nome di una subnet VPC in REGION che ha l'accesso privato Google abilitato e soddisfa altri requisiti della subnet di sessione.
    • LOCATION: la località in cui eseguire il job batch.
    • BUCKET_PATH: la posizione del bucket Cloud Storage in cui caricare le dipendenze del carico di lavoro. WAREHOUSE_FOLDER si trova in questo bucket. Il prefisso URI gs:// del bucket non è obbligatorio. Puoi specificare il percorso del bucket o il nome del bucket, ad esempio mybucketname1.

    Per ulteriori informazioni sull'invio di job batch Spark, consulta Eseguire un carico di lavoro batch Spark.

PySpark

Per inviare un job batch PySpark, completa i seguenti passaggi.

  1. Crea un file Python con i comandi PySpark che vuoi eseguire in BigLake Metastore.

    Ad esempio, il seguente comando configura un ambiente Spark per interagire con le tabelle Iceberg archiviate nel metastore BigLake. Il comando crea quindi un nuovo spazio dei nomi e una tabella Iceberg all'interno di questo spazio dei nomi.

    from pyspark.sql import SparkSession
    
    spark = SparkSession.builder \
    .appName("BigLake Metastore Iceberg") \
    .config("spark.sql.catalog.CATALOG_NAME", "org.apache.iceberg.spark.SparkCatalog") \
    .config("spark.sql.catalog.CATALOG_NAME.catalog-impl", "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog") \
    .config("spark.sql.catalog.CATALOG_NAME.gcp_project", "PROJECT_ID") \
    .config("spark.sql.catalog.CATALOG_NAME.gcp_location", "LOCATION") \
    .config("spark.sql.catalog.CATALOG_NAME.warehouse", "WAREHOUSE_DIRECTORY") \
    .getOrCreate()
    
    spark.sql("USE `CATALOG_NAME`;")
    spark.sql("CREATE NAMESPACE IF NOT EXISTS NAMESPACE_NAME;")
    spark.sql("USE NAMESPACE_NAME;")
    spark.sql("CREATE TABLE TABLE_NAME (id int, data string) USING ICEBERG LOCATION 'WAREHOUSE_DIRECTORY';")

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del Google Cloud progetto in cui eseguire il job batch.
    • LOCATION: la posizione in cui si trovano le risorse BigQuery.
    • CATALOG_NAME: il nome del catalogo che fa riferimento alla tabella Spark.
    • TABLE_NAME: un nome di tabella per la tabella Spark.
    • WAREHOUSE_DIRECTORY: l'URI della cartella Cloud Storage in cui è archiviato il data warehouse.
    • NAMESPACE_NAME: il nome dello spazio dei nomi che fa riferimento alla tabella Spark.
  2. Invia il job batch utilizzando il seguente comando gcloud dataproc batches submit pyspark.

    gcloud dataproc batches submit pyspark PYTHON_SCRIPT_PATH \
     --version=2.2 \
     --project=PROJECT_ID \
     --region=REGION \
     --deps-bucket=BUCKET_PATH \
     --properties="spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,spark.sql.catalog.CATALOG_NAME.catalog-impl=org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog,spark.sql.catalog.CATALOG_NAME.gcp_project=PROJECT_ID,spark.sql.catalog.CATALOG_NAME.gcp_location=LOCATION,spark.sql.catalog.CATALOG_NAME.warehouse=WAREHOUSE_DIRECTORY"

    Sostituisci quanto segue:

    • PYTHON_SCRIPT_PATH: il percorso dello script Python utilizzato dal job batch.
    • PROJECT_ID: l'ID del Google Cloud progetto in cui eseguire il job batch.
    • REGION: la regione in cui viene eseguito il tuo workload.
    • BUCKET_PATH: la posizione del bucket Cloud Storage in cui caricare le dipendenze del carico di lavoro. Il prefisso URI gs:// del bucket non è obbligatorio. Puoi specificare il percorso del bucket o il nome del bucket, ad esempio mybucketname1.

    Per saperne di più sull'invio di job batch PySpark, consulta il riferimento a gcloud per PySpark.

Passaggi successivi