Lire des tables gérées Apache Iceberg avec Apache Spark
Les sections suivantes décrivent comment lire des tables gérées à l'aide de tables gérées Apache Iceberg (ci-après tables gérées Iceberg) avec Apache Spark.
Avant de commencer
Découvrez les différents types de tables BigLake et les implications de leur utilisation dans la présentation des tables BigLake.
Avant de lire des tables gérées Iceberg avec Apache Spark, assurez-vous d'avoir configuré une connexion à une ressource cloud sur un bucket de stockage. Votre connexion a besoin d'autorisations en écriture sur le bucket de stockage, comme indiqué dans la section Rôles requis ci-dessous. Pour en savoir plus sur les rôles et autorisations requis pour les connexions, consultez Gérer les connexions.
Rôles requis
Pour obtenir les autorisations nécessaires pour autoriser BigQuery à gérer les tables de votre projet, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Pour interroger les données :
- Lecteur de données BigQuery (
roles/bigquery.dataViewer) sur votre projet - Utilisateur BigQuery (
roles/bigquery.user) sur votre projet
- Lecteur de données BigQuery (
-
Attribuez les rôles suivants au compte de service de connexion pour qu'il puisse lire et écrire des données dans Cloud Storage :
- Utilisateur d'objets Storage (
roles/storage.objectUser) sur le bucket - Lecteur des anciens buckets de l'espace de stockage (
roles/storage.legacyBucketReader) sur le bucket
- Utilisateur d'objets Storage (
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent les autorisations requises pour permettre à BigQuery de gérer les tables de votre projet. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour autoriser BigQuery à gérer les tables de votre projet :
bigquery.connections.delegatesur votre projetbigquery.jobs.createsur votre projetbigquery.readsessions.createsur votre projetbigquery.tables.getsur votre projetbigquery.tables.getDatasur votre projet-
storage.buckets.getsur votre bucket -
storage.objects.createsur votre bucket -
storage.objects.deletesur votre bucket -
storage.objects.getsur votre bucket -
storage.objects.listsur votre bucket
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Lire des tables gérées Iceberg avec Apache Spark
L'exemple suivant configure votre environnement pour utiliser Spark SQL avec Apache Iceberg, puis exécute une requête pour extraire les données d'une table gérée Iceberg spécifiée.
spark-sql \ --packages org.apache.iceberg:iceberg-spark-runtime-ICEBERG_VERSION_NUMBER \ --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.CATALOG_NAME.type=hadoop \ --conf spark.sql.catalog.CATALOG_NAME.warehouse='BUCKET_PATH' \ # Query the table SELECT * FROM CATALOG_NAME.FOLDER_NAME;
Remplacez les éléments suivants :
- ICEBERG_VERSION_NUMBER : version actuelle de l'environnement d'exécution Apache Spark/Iceberg. Téléchargez la dernière version sur la page Spark Releases (versions Spark).
- CATALOG_NAME : catalogue permettant de référencer votre table gérée Iceberg.
- BUCKET_PATH : chemin d'accès au bucket contenant les fichiers de table. Exemple :
gs://mybucket/ - FOLDER_NAME : dossier contenant les fichiers de table.
Exemple :
myfolder