La migration de tables Delta Lake vers Lakehouse pour Apache Iceberg peut être complexe et coûteuse si vous devez réécrire ou déplacer de grands volumes de données. Pour rendre vos données Delta Lake disponibles dans Lakehouse sans déplacer ni réécrire les fichiers sous-jacents, vous pouvez utiliser le générateur de jobs Dataflow. Le générateur de jobs fournit une interface à faible code ou sans code pour importer vos tables Cloud Storage Delta Lake directement dans Lakehouse.
Pour les nouvelles tables, Dataflow crée automatiquement le schéma. Pour les tables existantes, le schéma n'est pas modifié. Par conséquent, le schéma de la table de destination doit correspondre correctement à la table Delta Lake source pour que le job réussisse.
Utilisez les informations de connexion suivantes pour importer des données à partir d'une table Delta Lake stockée dans Cloud Storage.
Avant de commencer
Pour importer des données de table Delta Lake, vous avez besoin des éléments suivants :
Activez les API Dataflow, BigQuery et Lakehouse.
Rôles requis pour activer les API
Pour activer les API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation via le rôle Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.Pour obtenir les autorisations nécessaires à la création des ressources, demandez à votre administrateur de vous accorder les rôles IAM (Identity and Access Management) requis sur votre projet.
Une table Delta Lake existante stockée dans un bucket Cloud Storage. Le répertoire de la table doit être une racine de table Delta Lake valide contenant vos fichiers de données Parquet et le répertoire de journal des transactions
_delta_log/.Un catalogue, un espace de noms et une table Lakehouse Iceberg dans lesquels importer les données.
Compatibilité et limites
L'importation de données de table Delta Lake dans Lakehouse pour Apache Iceberg à l'aide de Dataflow présente les limites suivantes :
- Vous devez utiliser un job de pipeline par lot pour utiliser cette fonctionnalité.
- Pour les tables de destination existantes, le schéma n'est pas modifié. Le schéma de la table de destination doit correspondre correctement au schéma de la table Delta Lake source.
- Les données sources doivent être une table Delta Lake valide stockée dans Cloud Storage. Le répertoire racine de la table doit contenir les fichiers de données Parquet et le répertoire de journal des transactions
_delta_log/(contenant des fichiers journaux JSON ou Parquet) tels qu'ils ont été créés par Delta Lake. - Amazon S3 n'est pas compatible avec les sources de tables Delta Lake.
Importer une table Delta Lake
Pour importer une table Delta Lake dans Lakehouse pour Apache Iceberg, procédez comme suit :
Dans la Google Cloud console, accédez à la page Catalogue d'environnements d'exécution Lakehouse.
Sélectionnez le catalogue, l'espace de noms et la table dans lesquels vous souhaitez importer des données.
Sur la page Détails de la table, cliquez sur Importer une table, puis sélectionnez Depuis Delta Lake (lot).
La page Générateur de jobs Dataflow s'ouvre avec le blueprint Delta Lake vers Lakehouse chargé.
Dans la section Sources :
Pour développer le panneau source ReadFromDeltaLake Table Delta Lake , cliquez sur la flèche d'expansion .
Dans le champ Chemin de la table, saisissez l'URI Cloud Storage du répertoire racine de la table Delta Lake (le répertoire contenant les fichiers de données et le répertoire
_delta_log/). Exemple :gs://BUCKET_NAME/tables/TABLE_NAME.Facultatif : dans le champ Propriétés de configuration Hadoop, configurez toutes les propriétés de configuration Hadoop supplémentaires requises pour lire à partir de Cloud Storage. Exemple :
fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem.Cliquez sur OK.
Dans la section Récepteur :
Facultatif : examinez le panneau récepteur WriteToIceberg Table Lakehouse. Les informations de ce panneau, telles que la table Lakehouse, le nom du catalogue et l'emplacement de l'entrepôt, sont généralement préremplies.
Cliquez sur OK.
Dans la section Options Dataflow, cliquez sur Exécuter le job.
Si vous devez personnaliser davantage le pipeline Dataflow utilisé pour importer des tables Delta Lake, vous pouvez le faire à l'aide du formulaire du générateur de jobs ou de l'éditeur YAML.
Examiner le résultat du job
Une fois le job terminé, vous pouvez vérifier que les données ont été enregistrées dans la table Iceberg en l'interrogeant dans BigQuery.
Dans la liste des jobs Dataflow, vérifiez que l'état du job est Réussi.
Si le job échoue ou comporte des erreurs, consultez les journaux du job ou les journaux des nœuds de calcul pour en savoir plus.
Dans la Google Cloud console, accédez à la page BigQuery Studio.
Dans l'éditeur de requête, saisissez une requête SQL pour inspecter la table. Vous pouvez utiliser la
PROJECT_ID.CATALOG.NAMESPACE.TABLE_NAMEconvention pour interroger :SELECT * FROM `PROJECT_ID`.`CATALOG`.`NAMESPACE`.`TABLE_NAME` LIMIT 10;Cliquez sur Exécuter.
Examinez les résultats de la requête pour vous assurer que les données ont été traitées correctement.
Étape suivante
- Découvrez comment créer un job personnalisé avec l'interface utilisateur du générateur de jobs.
- Pour en savoir plus, consultez Présentation des tables Lakehouse pour Apache Iceberg dans BigQuery.