Ce document vous explique comment créer une table Apache Iceberg avec des métadonnées dans le catalogue Lakehouse Runtime à l'aide du service Managed Service pour Apache Spark Jobs, de la CLI SparkSQL ou de l'interface Web Zeppelin exécutée sur un cluster Managed Service pour Apache Spark.
Avant de commencer
Si vous ne l'avez pas déjà fait, créez un projet Google Cloud , un bucket Cloud Storage et un cluster Managed Service pour Apache Spark.
Configurer votre projet
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc, BigQuery, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc, BigQuery, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Créez un bucket Cloud Storage dans votre projet.
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
- Cliquez sur Créer.
- Sur la page Créer un bucket, saisissez les informations concernant votre bucket. Pour passer à l'étape suivante, cliquez sur Continuer.
-
Dans la section Premiers pas, procédez comme suit :
- Saisissez un nom unique qui répond aux exigences de dénomination des buckets.
- Pour ajouter une étiquette de bucket, développez la section Étiquettes (), cliquez sur add_box
Ajouter une étiquette, puis spécifiez un élément
keyetvaluepour votre étiquette.
-
Dans la section Choisir l'emplacement de stockage de vos données, procédez comme suit :
- Sélectionnez un type d'emplacement.
- Dans le menu déroulant Type d'emplacement, choisissez un emplacement où les données de votre bucket seront stockées de manière permanente.
- Si vous sélectionnez le type d'emplacement birégional, vous pouvez également choisir d'activer la réplication turbo à l'aide de la case à cocher correspondante.
- Pour configurer la réplication entre buckets, sélectionnez Ajouter une réplication entre buckets via le service de transfert de stockage et suivez ces étapes :
Configurer la réplication entre buckets
- Dans le menu Bucket, sélectionnez un bucket.
Dans la section Paramètres de réplication, cliquez sur Configurer pour configurer les paramètres du job de réplication.
Le volet Configurer la réplication entre buckets s'affiche.
- Pour filtrer les objets à répliquer en fonction du préfixe de leur nom, saisissez le préfixe avec lequel vous souhaitez inclure ou exclure des objets, puis cliquez sur Ajouter un préfixe.
- Pour définir une classe de stockage pour les objets répliqués, sélectionnez-en une dans le menu Classe de stockage. Si vous ignorez cette étape, les objets répliqués utiliseront la classe de stockage par défaut du bucket de destination.
- Cliquez sur OK.
-
Dans la section Choisir comment stocker vos données, procédez comme suit :
- Sélectionnez une classe de stockage par défaut pour le bucket ou classe automatique pour gérer automatiquement les classes de stockage des données de votre bucket.
- Pour activer l'espace de noms hiérarchique, dans la section Optimiser l'espace de stockage pour les charges de travail utilisant beaucoup de données, sélectionnez Activer l'espace de noms hiérarchique sur ce bucket.
- Dans la section Choisir comment contrôler l'accès aux objets, indiquez si votre bucket applique ou non la protection contre l'accès public et sélectionnez une méthode de contrôle des accès pour les objets de votre bucket.
-
Dans la section Choisir comment protéger les données d'objet, procédez comme suit :
- Sous Protection des données, sélectionnez les options que vous souhaitez définir pour votre bucket.
- Pour activer la suppression réversible, cochez la case Règle de suppression réversible (pour la récupération de données), puis spécifiez le nombre de jours pendant lesquels vous souhaitez conserver les objets après leur suppression.
- Pour configurer la gestion des versions d'objets, cochez la case Gestion des versions des objets (pour le contrôle des versions), puis spécifiez le nombre maximal de versions par objet et le nombre de jours après lesquels les versions obsolètes expirent.
- Pour activer la règle de conservation sur les objets et les buckets, cochez la case Conservation (pour la conformité), puis procédez comme suit :
- Pour activer le verrou de conservation des objets, cochez la case Activer la conservation des objets.
- Pour activer le verrou de bucket, cochez la case Définir une règle de conservation pour le bucket, puis choisissez une unité de temps et une durée pour votre période de conservation.
- Pour choisir comment vos données d'objet seront chiffrées, développez la section Chiffrement des données (), puis sélectionnez une méthode de chiffrement des données.
- Sous Protection des données, sélectionnez les options que vous souhaitez définir pour votre bucket.
-
Dans la section Premiers pas, procédez comme suit :
- Cliquez sur Créer.
Créez un cluster Managed Service pour Apache Spark. Pour économiser des ressources et des coûts, vous pouvez créer un cluster Managed Service pour Apache Spark à 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 Managed Service pour Apache Spark avec le composant Zeppelin facultatif activé.
Attribuez des rôles à un compte de service personnalisé (si nécessaire) : par défaut, les VM de cluster Managed Service pour Apache Spark utilisent le compte de service Compute Engine par défaut pour interagir avec Managed Service pour Apache Spark. 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 Managed Service pour Apache Spark (
roles/dataproc.worker) ou d'un rôle personnalisé avec les autorisations de rôle de nœud de calcul requises.
Mappage de la base de données OSS sur l'ensemble de données BigQuery
Notez le mappage suivant entre les termes des ensembles de données BigQuery et de bases de données Open Source :
| 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 le catalogue Lakehouse Runtime en envoyant un code Spark SQL à Managed Service pour Apache Spark, à la CLI Spark SQL et à l'interface Web du composant Zeppelin, qui s'exécutent sur un cluster Managed Service pour Apache Spark.
Job Managed Service pour Apache Spark
Vous pouvez envoyer un job à Managed Service pour Apache Spark en l'envoyant à un cluster Managed Service pour Apache Spark à l'aide de la consoleGoogle Cloud ou de la Google Cloud CLI, ou via une requête HTTP REST ou un appel programmatique gRPC aux bibliothèques clientes Cloud de Managed Service pour Apache Spark vers l'API Jobs.
Les exemples de cette section vous montrent comment envoyer un job Spark SQL Managed Service pour Apache Spark au service Managed Service pour Apache Spark afin de créer une table Iceberg avec des métadonnées dans BigQuery à l'aide de la gcloud CLI, de la console Google Cloud ou de l'API REST.
Préparer les fichiers de tâches
Pour créer un fichier de job Spark SQL, procédez comme suit. Le fichier contient des commandes Spark SQL permettant de créer et de mettre à jour une table Iceberg.
Dans une fenêtre de terminal local ou dans Cloud Shell, utilisez un éditeur de texte tel que
viounanopour copier les commandes suivantes dans un fichiericeberg-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 Cloud Storage et dossier utilisés pour l'entrepôt Iceberg.
Utilisez gcloud CLI pour copier le
iceberg-table.sqllocal 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.
Dans une fenêtre de terminal local ou dans Cloud Shell, exécutez la commande
curlsuivante pour télécharger le fichier JARiceberg-spark-runtime-3.5_2.12-1.6.1dans 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
Utilise la gcloud CLI pour copier le fichier JAR
iceberg-spark-runtime-3.5_2.12-1.6.1local 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 à Managed Service pour Apache Spark à l'aide de la gcloud CLI, de la consoleGoogle Cloud ou de l'API REST Managed Service pour Apache Spark.
gcloud
Exécutez la commande gcloud dataproc jobs submit spark-sql suivante en local dans une fenêtre de terminal locale ou dans Cloud Shell pour envoyer le job SparkSQL 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,BIGLAKE_ICEBERG_CATALOG_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 Managed Service pour Apache Spark.
- REGION : région Compute Engine dans laquelle se trouve votre cluster.
BIGLAKE_ICEBERG_CATALOG_JAR: URI Cloud Storage du plug-in de catalogue personnalisé Iceberg à utiliser. En fonction de votre numéro de version Iceberg, sélectionnez l'une des options suivantes :- Iceberg 1.9.1 :
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar - Iceberg 1.6.1 :
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
- Iceberg 1.9.1 :
- CATALOG_NAME : nom du catalogue Iceberg.
- BUCKET et WAREHOUSE_FOLDER : bucket Cloud Storage et dossier utilisés pour l'entrepôt Iceberg.
- LOCATION : emplacement BigQuery compatible. La position par défaut est « États-Unis ».
--jars: les fichiers JAR listés sont nécessaires pour créer des métadonnées de table dans le catalogue Lakehouse Runtime.--properties: Propriétés du catalogue.-f: fichier de jobiceberg-table.sqlque vous avez copié dans votre bucket Cloud Storage.
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.
Pour afficher les métadonnées d'une table dans BigQuery
Dans la console Google Cloud , accédez à la page BigQuery.
Affichez les métadonnées des tables Iceberg.
Console
Pour utiliser la console Google Cloud afin d'envoyer le job SparkSQL à Managed Service pour Apache Spark et créer une table Iceberg avec des métadonnées dans le catalogue Lakehouse Runtime, procédez comme suit :
Dans la console Google Cloud , accédez à Managed Service pour Apache Spark > Envoyer un job.
Accédez à la page "Envoyer une tâche", puis remplissez les champs suivants :
- ID du job : acceptez l'ID suggéré ou insérez votre propre ID.
- Région : sélectionnez la région dans laquelle se trouve votre cluster.
- Cluster : sélectionnez votre cluster.
- Type de mission : sélectionnez
SparkSql. - Type de source de requête : sélectionnez
Query file. - Fichier de requête : insérer
gs://BUCKET/iceberg-table.sql - Fichiers JAR : insérez ce qui suit :
gs://BUCKET/iceberg-spark-runtime-3.5_2.12-1.6.1.jar,BIGLAKE_ICEBERG_CATALOG_JAR
- BIGLAKE_ICEBERG_CATALOG_JAR : URI Cloud Storage du plug-in de catalogue personnalisé Iceberg à utiliser. En fonction de votre numéro de version Iceberg, sélectionnez l'une des options suivantes :
- Iceberg 1.9.1 :
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar - Iceberg 1.6.1 :
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
- Iceberg 1.9.1 :
- Propriétés : cliquez cinq fois sur Ajouter une propriété pour créer une liste de cinq champs de saisie
keyvalue, puis copiez les paires Clé et Valeur suivantes pour définir cinq propriétés.# Clé Valeur 1. spark.sql.catalog.CATALOG_NAMEorg.apache.iceberg.spark.SparkCatalog2. spark.sql.catalog.CATALOG_NAME.catalog-implorg.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog3. spark.sql.catalog.CATALOG_NAME.gcp_projectPROJECT_ID4. spark.sql.catalog.CATALOG_NAME.gcp_locationLOCATION5. spark.sql.catalog.CATALOG_NAME.warehousegs://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 .region où se trouve votre cluster.
- LOCATION : emplacement BigQuery compatible. La position par défaut est « États-Unis ».
- BUCKET et WAREHOUSE_FOLDER : bucket Cloud Storage et dossier utilisés pour l'entrepôt Iceberg.
Cliquez sur Envoyer.
Pour surveiller la progression d'un job et afficher son résultat, accédez à la page Jobs de Managed Service pour Apache Spark dans la console Google Cloud , puis cliquez sur
Job IDpour ouvrir la page Job details.
Pour afficher les métadonnées d'une table dans BigQuery
Dans la console Google Cloud , accédez à la page BigQuery.
Affichez les métadonnées des tables Iceberg.
REST
Vous pouvez utiliser l'API jobs.submit de Managed Service pour Apache Spark afin d'envoyer le job Spark SQL à Managed Service pour Apache Spark et créer ainsi une table Iceberg avec des métadonnées dans le catalogue du runtime Lakehouse.
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 Managed Service pour Apache Spark.
- REGION : région Compute Engine dans laquelle se trouve votre cluster.
- CATALOG_NAME : nom du catalogue Iceberg.
- BUCKET et WAREHOUSE_FOLDER : bucket Cloud Storage et dossier utilisés pour l'entrepôt Iceberg. LOCATION : emplacement BigQuery compatible. La position par défaut est « États-Unis ».
BIGLAKE_ICEBERG_CATALOG_JAR: URI Cloud Storage du plug-in de catalogue personnalisé Iceberg à utiliser. En fonction du numéro de version d'Iceberg, sélectionnez l'une des options suivantes :- Iceberg 1.9.1 :
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar - Iceberg 1.6.1 :
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
- Iceberg 1.9.1 :
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 jobiceberg-table.sqlque 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.6.1.jar,BIGLAKE_ICEBERG_CATALOG_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.6.1.jar",
"BIGLAKE_ICEBERG_CATALOG_JAR"
]
},
"driverControlFilesUri": "gs://dataproc-...",
"driverOutputResourceUri": "gs://dataproc-.../driveroutput",
"jobUuid": "...",
"region": "REGION"
}
Pour surveiller la progression d'un job et afficher son résultat, accédez à la page Jobs de Managed Service pour Apache Spark dans la console Google Cloud , puis cliquez sur Job ID pour ouvrir la page Job details.
Pour afficher les métadonnées d'une table dans BigQuery
Dans la console Google Cloud , accédez à la page BigQuery.
Affichez les métadonnées des tables Iceberg.
CLI Spark SQL
Les étapes suivantes vous expliquent comment créer une table Iceberg avec des métadonnées de table stockées dans le catalogue Lakehouse Runtime à l'aide de la CLI Spark SQL exécutée sur le nœud maître d'un cluster Managed Service pour Apache Spark.
Utilisez SSH pour vous connecter au nœud maître de votre cluster Managed Service pour Apache Spark.
Dans le terminal de la session SSH, utilisez l'éditeur de texte
viounanopour copier les commandes suivantes dans un fichiericeberg-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 Cloud Storage et dossier utilisés pour l'entrepôt Iceberg.
Dans le terminal de la session SSH, exécutez la commande
spark-sqlsuivante 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,BIGLAKE_ICEBERG_CATALOG_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 :
BIGLAKE_ICEBERG_CATALOG_JAR: URI Cloud Storage du plug-in de catalogue personnalisé Iceberg à utiliser. En fonction de votre numéro de version Iceberg, sélectionnez l'une des options suivantes :- Iceberg 1.9.1 :
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar - Iceberg 1.6.1 :
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
- Iceberg 1.9.1 :
- 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. La position par défaut est « États-Unis ».
Afficher les métadonnées d'une table dans BigQuery
Dans la console Google Cloud , accédez à la page BigQuery.
Affichez les métadonnées des tables Iceberg.
Interface Web Zeppelin
Les étapes suivantes vous montrent comment créer une table Iceberg avec des métadonnées de table stockées dans le catalogue Lakehouse Runtime à l'aide de l'interface Web Zeppelin exécutée sur le nœud maître d'un cluster Managed Service pour Apache Spark .
Dans la console Google Cloud , accédez à la page Clusters de Managed Service pour Apache Spark.
Accéder à la page "Clusters Managed Service pour Apache Spark"
Sélectionnez le nom de votre cluster pour ouvrir la page Détails du cluster.
Cliquez sur l'onglet Interfaces Web pour afficher la liste des liens Component Gateway vers les interfaces Web des composants par défaut et facultatifs installés sur le cluster.
Cliquez sur le lien Zeppelin pour ouvrir l'interface Web Zeppelin.
Dans l'interface Web Zeppelin, cliquez sur le menu anonymous, puis sur Interpreter pour ouvrir la page Interpreters.
Ajoutez deux fichiers JAR à l'interpréteur Zeppelin Spark, comme suit :
- Saisissez "Spark" dans la zone
Search interpreterspour accéder à la section de l'interpréteur Spark. - Cliquez sur edit (modifier).
Collez ce qui suit 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,BIGLAKE_ICEBERG_CATALOG_JAR
Ajoutez la note suivante :
BIGLAKE_ICEBERG_CATALOG_JAR: URI Cloud Storage du plug-in de catalogue personnalisé Iceberg à utiliser. En fonction du numéro de version d'Iceberg, sélectionnez l'une des options suivantes :- Iceberg 1.9.1 :
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.9.1-1.0.1.jar - Iceberg 1.6.1 :
gs://spark-lib/bigquery/iceberg-bigquery-catalog-1.6.1-1.0.2.jar
Cliquez sur Enregistrer en 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.
- Saisissez "Spark" dans la zone
Dans le menu du notebook Zeppelin, cliquez sur Create new note (Créer une note).
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.
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. La position par défaut est « États-Unis ».
- BUCKET et WAREHOUSE_DIRECTORY : bucket Cloud Storage et dossier utilisés comme répertoire d'entrepôt Iceberg.
Cliquez sur l'icône d'exécution ou appuyez sur
Shift-Enterpour exécuter le code. Une fois le job terminé, le message d'état "Spark Job Finished" (Job Spark terminé) s'affiche et le résultat indique le contenu de la table :
Afficher les métadonnées d'une table dans BigQuery
Dans la console Google Cloud , accédez à la page BigQuery.
Affichez les métadonnées des tables Iceberg.