Créer une table Apache Iceberg avec des métadonnées dans BigLake Metastore

Ce document vous explique comment créer une table Apache Iceberg avec des métadonnées dans BigLake Metastore à l'aide du service Dataproc Jobs, de la CLI SparkSQL ou de l'interface Web Zeppelin exécutée sur un cluster Dataproc.

Avant de commencer

Si ce n'est pas déjà fait, créez un projet Google Cloud , un bucket Cloud Storage et un cluster Dataproc.

  1. Configurer votre projet

    1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
    2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    3. Verify that billing is enabled for your Google Cloud project.

    4. Enable the Dataproc, BigQuery, and Cloud Storage APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

    5. Install the Google Cloud CLI.

    6. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    7. Pour initialiser la gcloud CLI, exécutez la commande suivante :

      gcloud init
    8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    9. Verify that billing is enabled for your Google Cloud project.

    10. Enable the Dataproc, BigQuery, and Cloud Storage APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

    11. Install the Google Cloud CLI.

    12. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    13. Pour initialiser la gcloud CLI, exécutez la commande suivante :

      gcloud init
    14. Créez un bucket Cloud Storage dans votre projet.

      1. In the Google Cloud console, go to the Cloud Storage Buckets page.

        Go to Buckets

      2. Click Create.
      3. On the Create a bucket page, enter your bucket information. To go to the next step, click Continue.
        1. In the Get started section, do the following:
          • Enter a globally unique name that meets the bucket naming requirements.
          • To add a bucket label, expand the Labels section (), click Add label, and specify a key and a value for your label.
        2. In the Choose where to store your data section, do the following:
          1. Select a Location type.
          2. Choose a location where your bucket's data is permanently stored from the Location type drop-down menu.
          3. To set up cross-bucket replication, select Add cross-bucket replication via Storage Transfer Service and follow these steps:

            Set up cross-bucket replication

            1. In the Bucket menu, select a bucket.
            2. In the Replication settings section, click Configure to configure settings for the replication job.

              The Configure cross-bucket replication pane appears.

              • To filter objects to replicate by object name prefix, enter a prefix that you want to include or exclude objects from, then click Add a prefix.
              • To set a storage class for the replicated objects, select a storage class from the Storage class menu. If you skip this step, the replicated objects will use the destination bucket's storage class by default.
              • Click Done.
        3. In the Choose how to store your data section, do the following:
          1. Select a default storage class for the bucket or Autoclass for automatic storage class management of your bucket's data.
          2. To enable hierarchical namespace, in the Optimize storage for data-intensive workloads section, select Enable hierarchical namespace on this bucket.
        4. In the Choose how to control access to objects section, select whether or not your bucket enforces public access prevention, and select an access control method for your bucket's objects.
        5. In the Choose how to protect object data section, do the following:
          • Select any of the options under Data protection that you want to set for your bucket.
            • To enable soft delete, click the Soft delete policy (For data recovery) checkbox, and specify the number of days you want to retain objects after deletion.
            • To set Object Versioning, click the Object versioning (For version control) checkbox, and specify the maximum number of versions per object and the number of days after which the noncurrent versions expire.
            • To enable the retention policy on objects and buckets, click the Retention (For compliance) checkbox, and then do the following:
              • To enable Object Retention Lock, click the Enable object retention checkbox.
              • To enable Bucket Lock, click the Set bucket retention policy checkbox, and choose a unit of time and a length of time for your retention period.
          • To choose how your object data will be encrypted, expand the Data encryption section (), and select a Data encryption method.
      4. Click Create.

    15. En créant un cluster Dataproc. Pour économiser des ressources et des coûts, vous pouvez créer un cluster Dataproc à nœud unique pour exécuter les exemples présentés dans ce document.

      • L'accès privé à Google (APG) doit être activé sur le sous-réseau de la région dans laquelle le cluster est créé.

      • Si vous souhaitez exécuter l'exemple d'interface Web Zeppelin de ce guide, vous devez utiliser ou créer un cluster Dataproc avec le composant facultatif Zeppelin activé.

    16. Attribuez des rôles à un compte de service personnalisé (si nécessaire) : par défaut, les VM de cluster Dataproc utilisent le compte de service Compute Engine par défaut pour interagir avec Dataproc. Si vous souhaitez spécifier un compte de service personnalisé lorsque vous créez votre cluster, il doit disposer du rôle Nœud de calcul Dataproc (roles/dataproc.worker) ou d'un rôle personnalisé avec les autorisations de nœud de calcul requises.

    17. Mappage de la base de données OSS sur l'ensemble de données BigQuery

      Notez la correspondance suivante entre les termes des bases de données Open Source et des ensembles de données BigQuery :

      Base de données OSS Ensemble de données BigQuery
      Espace de noms, base de données Ensemble de données
      Table partitionnée ou non partitionnée Table
      Afficher Afficher

      Créer une table Iceberg

      Cette section vous explique comment créer une table Iceberg avec des métadonnées dans BigLake Metastore en envoyant un code Spark SQL au service Dataproc, à la CLI Spark SQL et à l'interface Web du composant Zeppelin, qui s'exécutent sur un cluster Dataproc.

      Job Dataproc

      Vous pouvez envoyer une tâche au service Dataproc en l'envoyant à un cluster Dataproc à l'aide de la consoleGoogle Cloud ou de la Google Cloud CLI, ou via un appel HTTP REST ou un appel gRPC automatisé des bibliothèques clientes Cloud Dataproc à l'API Dataproc Jobs.

      Les exemples de cette section vous montrent comment envoyer un job SparkSQL Dataproc au service Dataproc pour créer une table Iceberg avec des métadonnées dans BigQuery à l'aide de la CLI gcloud, de la console Google Cloud ou de l'API REST Dataproc.

      Préparer les fichiers de tâches

      Procédez comme suit pour créer un fichier de job Spark SQL. Le fichier contient des commandes Spark SQL permettant de créer et de mettre à jour une table Iceberg.

      1. Dans une fenêtre de terminal local ou dans Cloud Shell, utilisez un éditeur de texte tel que vi ou nano pour copier les commandes suivantes dans un fichier iceberg-table.sql, puis enregistrez le fichier dans le répertoire actuel.

        USE CATALOG_NAME;
        CREATE NAMESPACE IF NOT EXISTS example_namespace;
        USE example_namespace;
        DROP TABLE IF EXISTS example_table;
        CREATE TABLE example_table (id int, data string) USING ICEBERG LOCATION 'gs://BUCKET/WAREHOUSE_FOLDER';
        INSERT INTO example_table VALUES (1, 'first row');
        ALTER TABLE example_table ADD COLUMNS (newDoubleCol double);
        DESCRIBE TABLE example_table;
        

        Remplacez les éléments suivants :

        • CATALOG_NAME : nom du catalogue Iceberg.
        • BUCKET et WAREHOUSE_FOLDER : bucket et dossier Cloud Storage utilisés pour l'entrepôt Iceberg.
      2. Utilisez gcloud CLI pour copier le fichier iceberg-table.sql local dans votre bucket Cloud Storage.

        gcloud storage cp iceberg-table.sql gs://BUCKET/
        

      Ensuite, téléchargez et copiez le fichier JAR iceberg-spark-runtime-3.5_2.12-1.6.1 dans Cloud Storage.

      1. Dans une fenêtre de terminal locale ou dans Cloud Shell, exécutez la commande curl suivante pour télécharger le fichier JAR iceberg-spark-runtime-3.5_2.12-1.6.1 dans le répertoire actuel.

        curl -o iceberg-spark-runtime-3.5_2.12-1.6.1.jar https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar
        
      2. Utilise la gcloud CLI pour copier le fichier JAR iceberg-spark-runtime-3.5_2.12-1.6.1 local du répertoire actuel vers votre bucket dans Cloud Storage.

        gcloud storage cp iceberg-spark-runtime-3.5_2.12-1.6.1.jar gs://BUCKET/
        

      Envoyer le job Spark SQL

      Sélectionnez un onglet pour suivre les instructions permettant d'envoyer le job SparkSQL au service Dataproc à l'aide de la gcloud CLI, de la consoleGoogle Cloud ou de l'API REST Dataproc.

      gcloud

      1. Exécutez la commande gcloud dataproc jobs submit spark-sql en local dans une fenêtre de terminal ou dans Cloud Shell pour envoyer le job Spark SQL permettant de créer la table Iceberg.

        gcloud dataproc jobs submit spark-sql \
            --project=PROJECT_ID \
            --cluster=CLUSTER_NAME \
            --region=REGION \
            --jars="gs://BUCKET/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.1-beta.jar" \
            --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=gs://BUCKET/WAREHOUSE_FOLDER" \
            -f="gs://BUCKETiceberg-table.sql"
        

        Remarques :

        • PROJECT_ID : ID de votre projet Google Cloud . Les ID de projet sont listés dans la section Informations sur le projet du tableau de bord de la console Google Cloud .
        • CLUSTER_NAME : nom de votre cluster Dataproc.
        • REGION : région Compute Engine dans laquelle se trouve votre cluster.
        • CATALOG_NAME : nom du catalogue Iceberg.
        • BUCKET et WAREHOUSE_FOLDER : bucket et dossier Cloud Storage utilisés pour l'entrepôt Iceberg.
        • LOCATION : emplacement BigQuery compatible. L'emplacement par défaut est "US".
        • --jars : les fichiers JAR listés sont nécessaires pour créer des métadonnées de table dans BigLake Metastore.
        • --properties : propriétés du catalogue.
        • -f : fichier de job iceberg-table.sql que vous avez copié dans votre bucket Cloud Storage.
      2. Affichez la description de la table dans la sortie du terminal une fois le job terminé.

        Time taken: 2.194 seconds
        id                      int
        data                    string
        newDoubleCol            double
        Time taken: 1.479 seconds, Fetched 3 row(s)
        Job JOB_ID finished successfully.
        
      3. Pour afficher les métadonnées d'une table dans BigQuery

        1. Dans la console Google Cloud , accédez à la page BigQuery.

          Accéder à BigQuery Studio

        2. Affichez les métadonnées d'une table Iceberg.

      Console

      Procédez comme suit pour utiliser la console Google Cloud afin d'envoyer le job SparkSQL au service Dataproc pour créer une table Iceberg avec des métadonnées dans le metastore BigLake.

      1. Dans la console Google Cloud , accédez à Dataproc > Envoyer une tâche.

        Accédez à la page "Envoyer une tâche", puis renseignez les champs suivants :

        • ID de tâche : acceptez l'ID suggéré ou saisissez votre propre ID.
        • Région : sélectionnez la région dans laquelle se trouve votre cluster.
        • Cluster : sélectionnez votre cluster.
        • Type de tâche : sélectionnez SparkSql.
        • Type de source de la requête : sélectionnez Query file.
        • Fichier de requête : insérer gs://BUCKET/iceberg-table.sql
        • Fichiers JAR : insérez les éléments suivants :
          gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.1-beta.jar
          
        • Propriétés : cliquez cinq fois sur Ajouter une propriété pour créer une liste de cinq champs de saisie key value, puis copiez les paires Clé et Valeur suivantes pour définir cinq propriétés.
          # Clé Valeur
          1.
          spark.sql.catalog.CATALOG_NAME
          
          org.apache.iceberg.spark.SparkCatalog
          
          2.
          spark.sql.catalog.CATALOG_NAME.catalog-impl
          
          org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog
          
          3.
          spark.sql.catalog.CATALOG_NAME.gcp_project
          
          PROJECT_ID
          
          4.
          spark.sql.catalog.CATALOG_NAME.gcp_location
          
          LOCATION
          
          5.
          spark.sql.catalog.CATALOG_NAME.warehouse
          
          gs://BUCKET/WAREHOUSE_FOLDER
          

        Remarques :

        • CATALOG_NAME : nom du catalogue Iceberg.
        • PROJECT_ID : ID de votre projet Google Cloud . Les ID de projet sont listés dans la section Informations sur le projet du tableau de bord de la console Google Cloud . Région où se trouve votre cluster.
        • LOCATION : emplacement BigQuery compatible. L'emplacement par défaut est "US".
        • BUCKET et WAREHOUSE_FOLDER : bucket et dossier Cloud Storage utilisés pour l'entrepôt Iceberg.
      2. Cliquez sur Envoyer.

      3. Pour surveiller la progression du job et afficher son résultat, accédez à la page Tâches Dataproc dans la console Google Cloud , puis cliquez sur Job ID pour ouvrir la page Détails du job.

      4. Pour afficher les métadonnées d'une table dans BigQuery

        1. Dans la console Google Cloud , accédez à la page BigQuery.

          Accéder à BigQuery Studio

        2. Affichez les métadonnées d'une table Iceberg.

      REST

      Vous pouvez utiliser l'API Dataproc jobs.submit pour envoyer le job SparkSQL au service Dataproc afin de créer une table Iceberg avec des métadonnées dans BigLake Metastore.

      Avant d'utiliser les données de requête, effectuez les remplacements suivants :

      • PROJECT_ID : ID de votre projet Google Cloud . Les ID de projet sont listés dans la section Informations sur le projet du tableau de bord de la console Google Cloud .
      • CLUSTER_NAME : nom de votre cluster Dataproc.
      • REGION : région Compute Engine dans laquelle se trouve votre cluster.
      • CATALOG_NAME : nom du catalogue Iceberg.
      • BUCKET et WAREHOUSE_FOLDER : bucket et dossier Cloud Storage utilisés pour l'entrepôt Iceberg.
      • LOCATION : emplacement BigQuery compatible. L'emplacement par défaut est "US".
      • jarFileUris : les fichiers JAR listés sont nécessaires pour créer des métadonnées de table dans BigQuery Metastore.
      • properties : propriétés du catalogue.
      • queryFileUri : fichier de job iceberg-table.sql que vous avez copié dans votre bucket Cloud Storage.

      Méthode HTTP et URL :

      POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/jobs:submit

      Corps JSON de la requête :

      {
        "projectId": "PROJECT_ID",
        "job": {
          "placement": {
            "clusterName": "CLUSTER_NAME"
          },
          "statusHistory": [],
          "reference": {
            "jobId": "",
            "projectId": "PROJECT_ID"
          },
          "sparkSqlJob": {
            "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": "gs://BUCKET/WAREHOUSE_FOLDER"
            },
            "jarFileUris": [
              "gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.5.2.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.5.2-1.0.1-beta.jar"
            ],
            "scriptVariables": {},
            "queryFileUri": "gs://BUCKET/iceberg-table.sql"
          }
        }
      }
      
      

      Pour envoyer votre requête, développez l'une des options suivantes :

      Vous devriez recevoir une réponse JSON de ce type :

      {
        "reference": {
          "projectId": "PROJECT_ID",
          "jobId": "..."
        },
        "placement": {
          "clusterName": "CLUSTER_NAME",
          "clusterUuid": "..."
        },
        "status": {
          "state": "PENDING",
          "stateStartTime": "..."
        },
        "submittedBy": "USER",
        "sparkSqlJob": {
          "queryFileUri": "gs://BUCKET/iceberg-table.sql",
          "properties": {
            "spark.sql.catalog.USER_catalog": "org.apache.iceberg.spark.SparkCatalog",
            "spark.sql.catalog.USER_catalog.catalog-impl": "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog",
            "spark.sql.catalog.USER_catalog.gcp_project": "PROJECT_ID",
            "spark.sql.catalog.USER_catalog.gcp_location": "LOCATION",
            "spark.sql.catalog.USER_catalog.warehouse": "gs://BUCKET/WAREHOUSE_FOLDER"
          },
          "jarFileUris": [
            "gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.5.2.jar",
            "gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.5.2-1.0.1-beta.jar"
          ]
        },
        "driverControlFilesUri": "gs://dataproc-...",
        "driverOutputResourceUri": "gs://dataproc-.../driveroutput",
        "jobUuid": "...",
        "region": "REGION"
      }
      

      Pour surveiller la progression du job et afficher son résultat, accédez à la page Tâches Dataproc dans la console Google Cloud , puis cliquez sur Job ID pour ouvrir la page Détails du job.

      Pour afficher les métadonnées d'une table dans BigQuery

      1. Dans la console Google Cloud , accédez à la page BigQuery.

        Accéder à BigQuery Studio

      2. Affichez les métadonnées d'une table Iceberg.

      CLI Spark SQL

      Les étapes suivantes vous montrent comment créer une table Iceberg avec des métadonnées de table stockées dans BigLake Metastore à l'aide de la CLI SparkSQL exécutée sur le nœud maître d'un cluster Dataproc.

      1. Utilisez SSH pour vous connecter au nœud maître de votre cluster Dataproc.

      2. Dans le terminal de la session SSH, utilisez l'éditeur de texte vi ou nano pour copier les commandes suivantes dans un fichier iceberg-table.sql.

        SET CATALOG_NAME = `CATALOG_NAME`;
        SET BUCKET = `BUCKET`;
        SET WAREHOUSE_FOLDER = `WAREHOUSE_FOLDER`;
        USE `${CATALOG_NAME}`;
        CREATE NAMESPACE IF NOT EXISTS `${CATALOG_NAME}`.example_namespace;
        DROP TABLE IF EXISTS `${CATALOG_NAME}`.example_namespace.example_table;
        CREATE TABLE `${CATALOG_NAME}`.example_namespace.example_table (id int, data string) USING ICEBERG LOCATION 'gs://${BUCKET}/${WAREHOUSE_FOLDER}';
        INSERT INTO `${CATALOG_NAME}`.example_namespace.example_table VALUES (1, 'first row');
        ALTER TABLE `${CATALOG_NAME}`.example_namespace.example_table ADD COLUMNS (newDoubleCol double);
        DESCRIBE TABLE `${CATALOG_NAME}`.example_namespace.example_table;
        

        Remplacez les éléments suivants :

        • CATALOG_NAME : nom du catalogue Iceberg.
        • BUCKET et WAREHOUSE_FOLDER : bucket et dossier Cloud Storage utilisés pour l'entrepôt Iceberg.
      3. Dans le terminal de la session SSH, exécutez la commande spark-sql suivante pour créer la table Iceberg.

        spark-sql \
        --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.6.1 \
        --jars https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.1-beta.jar \
        --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \
        --conf spark.sql.catalog.CATALOG_NAME.catalog-impl=org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog \
        --conf spark.sql.catalog.CATALOG_NAME.gcp_project=PROJECT_ID \
        --conf spark.sql.catalog.CATALOG_NAME.gcp_location=LOCATION \
        --conf spark.sql.catalog.CATALOG_NAME.warehouse=gs://BUCKET/WAREHOUSE_FOLDER \
        -f iceberg-table.sql
        

        Remplacez les éléments suivants :

        • PROJECT_ID : ID de votre projet Google Cloud . Les ID de projet sont listés dans la section Informations sur le projet du tableau de bord de la console Google Cloud .
        • LOCATION : emplacement BigQuery compatible. L'emplacement par défaut est "US".
      4. Afficher les métadonnées de la table dans BigQuery

        1. Dans la console Google Cloud , accédez à la page BigQuery.

          Accéder à BigQuery Studio

        2. Affichez les métadonnées d'une table Iceberg.

      Interface Web Zeppelin

      Les étapes suivantes vous expliquent comment créer une table Iceberg avec des métadonnées de table stockées dans BigLake Metastore à l'aide de l'interface Web Zeppelin exécutée sur le nœud maître d'un cluster Dataproc .

      1. Dans la console Google Cloud , accédez à la page Clusters Dataproc.

        Accéder à la page "Clusters Dataproc"

      2. Sélectionnez le nom de votre cluster pour ouvrir la page Détails du cluster.

      3. Cliquez sur l'onglet Web Interfaces (Interfaces Web) pour afficher la liste des liens de la passerelle des composants vers les interfaces Web des composants par défaut et facultatifs installés sur le cluster.

      4. Cliquez sur le lien Zeppelin pour ouvrir l'interface Web Zeppelin.

      5. Dans l'interface Web Zeppelin, cliquez sur le menu anonymous, puis sur Interpreter (Interprète) pour ouvrir la page Interpreters (Interprètes).

      6. Ajoutez deux fichiers JAR à l'interpréteur Zeppelin Spark, comme suit :

        1. Saisissez "Spark" dans la zone Search interpreters pour accéder à la section de l'interpréteur Spark.
        2. Cliquez sur edit (modifier).
        3. Collez le texte suivant dans le champ spark.jars :

          https://storage-download.googleapis.com/maven-central/maven2/org/apache/iceberg/iceberg-spark-runtime-3.5_2.12/1.6.1/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.1-beta.jar

        4. Cliquez sur Enregistrer au bas de la section de l'interpréteur Spark, puis sur OK pour mettre à jour l'interpréteur et le redémarrer avec les nouveaux paramètres.

      7. Dans le menu du notebook Zeppelin, cliquez sur Create new note (Créer une note).

      8. Dans la boîte de dialogue Créer une note, saisissez un nom pour le notebook et acceptez l'interpréteur spark par défaut. Cliquez sur Créer pour ouvrir le notebook.

      9. Copiez le code PySpark suivant dans votre notebook Zeppelin après avoir renseigné les variables.

        %pyspark
        from pyspark.sql import SparkSession
        project_id = "PROJECT_ID" catalog = "CATALOG_NAME" namespace = "NAMESPACE" location = "LOCATION" warehouse_dir = "gs://BUCKET/WAREHOUSE_DIRECTORY"
        spark = SparkSession.builder \ .appName("BigQuery Metastore Iceberg") \ .config(f"spark.sql.catalog.{catalog}", "org.apache.iceberg.spark.SparkCatalog") \ .config(f"spark.sql.catalog.{catalog}.catalog-impl", "org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog") \ .config(f"spark.sql.catalog.{catalog}.gcp_project", f"{project_id}") \ .config(f"spark.sql.catalog.{catalog}.gcp_location", f"{location}") \ .config(f"spark.sql.catalog.{catalog}.warehouse", f"{warehouse_dir}") \ .getOrCreate()
        spark.sql(f"USE `{catalog}`;") spark.sql(f"CREATE NAMESPACE IF NOT EXISTS `{namespace}`;") spark.sql(f"USE `{namespace}`;")
        \# Create table and display schema (without LOCATION) spark.sql("DROP TABLE IF EXISTS example_iceberg_table") spark.sql("CREATE TABLE example_iceberg_table (id int, data string) USING ICEBERG") spark.sql("DESCRIBE example_iceberg_table;")
        \# Insert table data. spark.sql("INSERT INTO example_iceberg_table VALUES (1, 'first row');")
        \# Alter table, then display schema. spark.sql("ALTER TABLE example_iceberg_table ADD COLUMNS (newDoubleCol double);")
        \# Select and display the contents of the table. spark.sql("SELECT * FROM example_iceberg_table").show()

        Remplacez les éléments suivants :

        • PROJECT_ID : ID de votre projet Google Cloud . Les ID de projet sont listés dans la section Informations sur le projet du tableau de bord de la console Google Cloud .
        • CATALOG_NAME et NAMESPACE : le nom et l'espace de noms du catalogue Iceberg sont combinés pour identifier la table Iceberg (catalog.namespace.table_name).
        • LOCATION : emplacement BigQuery compatible. L'emplacement par défaut est "US".
        • BUCKET et WAREHOUSE_DIRECTORY : bucket et dossier Cloud Storage utilisés comme répertoire d'entrepôt Iceberg.
      10. Cliquez sur l'icône d'exécution ou appuyez sur Shift-Enter pour exécuter le code. Une fois le job terminé, le message d'état indique "Spark Job Finished" (Job Spark terminé) et le résultat affiche le contenu de la table :

      11. Afficher les métadonnées de la table dans BigQuery

        1. Dans la console Google Cloud , accédez à la page BigQuery.

          Accéder à BigQuery Studio

        2. Affichez les métadonnées d'une table Iceberg.