Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Travailler avec Apache Iceberg dans AWS Glue
AWS Glue
AWS Glue les jobs encapsulent des scripts qui définissent la logique de transformation à l'aide d'un environnement d'exécution Apache Spark
Lorsque vous créez des tâches Iceberg dans AWS Glue, selon la version de AWS Glue, vous pouvez utiliser l'intégration native d'Iceberg ou une version personnalisée d'Iceberg pour associer des dépendances Iceberg à la tâche.
Utilisation de l'intégration native d'Iceberg
AWS Glue les versions 3.0 et 4.0 prennent en charge nativement les formats de lacs de données transactionnels tels qu'Apache Iceberg, Apache Hudi et Linux Foundation Delta Lake in for Spark. AWS Glue Cette fonctionnalité d'intégration simplifie les étapes de configuration requises pour commencer à utiliser ces frameworks dans AWS Glue.
Pour activer le support d'Iceberg pour votre AWS Glue tâche, définissez la tâche : choisissez l'onglet Détails de la tâche correspondant à votre AWS Glue tâche, accédez à Paramètres de la tâche sous Propriétés avancées, puis définissez la clé --datalake-formats
et sa valeur suriceberg
.
Si vous créez une tâche à l'aide d'un bloc-notes, vous pouvez configurer le paramètre dans la première cellule du bloc-notes en utilisant la %%configure
magie suivante :
%%configure { "--conf" : <job-specific Spark configuration discussed later>, "--datalake-formats" : "iceberg" }
Utiliser une version personnalisée d'Iceberg
Dans certains cas, vous souhaiterez peut-être conserver le contrôle de la version d'Iceberg pour la tâche et la mettre à niveau à votre propre rythme. Par exemple, la mise à niveau vers une version ultérieure peut débloquer l'accès à de nouvelles fonctionnalités et à des améliorations de performances. Pour utiliser une version spécifique d'Iceberg AWS Glue, vous pouvez utiliser un connecteur personnalisé ou votre propre fichier JAR.
Utilisation d'un connecteur personnalisé
AWS Glue prend en charge les connecteurs, qui sont des packages de code facultatifs qui facilitent l'accès aux magasins de données dans AWS Glue Studio. Vous pouvez vous abonner à un connecteur dans AWS Marketplace ou créer un connecteur personnalisé.
Note
AWS Marketplace propose le connecteur Apache Iceberg pour AWS Glue
Par exemple, pour créer un connecteur client pour la version 0.13.1 d'Iceberg, procédez comme suit :
-
Téléchargez les fichiers
iceberg-spark-runtime-3.1_2.12-0.13.1.jar
bundle-2.17.161.jar
, eturl-connection-client-2.17.161.jar
dans un compartiment Amazon S3. Vous pouvez télécharger ces fichiers depuis leurs référentiels Apache Maven respectifs. -
Sur la AWS Glue Studio console
, créez un connecteur Spark personnalisé : -
Dans le volet de navigation, sélectionnez Connexions aux données. (Si vous utilisez l'ancienne navigation, choisissez Connecteurs, Créer un connecteur personnalisé.)
-
Dans la zone Connecteurs, choisissez Créer un connecteur personnalisé.
-
Sur la page Créer un connecteur personnalisé :
-
Spécifiez le chemin d'accès aux fichiers JAR dans Amazon S3.
-
Entrez un nom pour le connecteur.
-
Choisissez Spark comme type de connecteur.
-
Pour Nom de classe, spécifiez le nom de classe de source de données complet (ou son alias) que vous utilisez lors du chargement de la source de données Spark avec l'
format
opérateur. -
(Facultatif) Fournissez une description du connecteur.
-
-
3. Sélectionnez Créer un connecteur.
Lorsque vous utilisez des connecteurs AWS Glue, vous devez créer une connexion pour le connecteur. Une connexion contient les propriétés requises pour se connecter à un magasin de données spécifique. Vous utilisez la connexion avec vos sources de données et cibles de données dans la tâche ETL. Les connecteurs et les connexions fonctionnent ensemble pour faciliter l'accès aux magasins de données.
Pour créer une connexion à l'aide du connecteur Iceberg personnalisé que vous avez créé :
-
Sur la AWS Glue Studio console
, sélectionnez votre connecteur Iceberg personnalisé. -
Suivez les instructions pour fournir les informations, telles que votre VPC et les autres configurations réseau requises par la tâche, puis choisissez Create connection.
Vous pouvez désormais utiliser la connexion dans votre tâche AWS Glue ETL. Selon la façon dont vous créez la tâche, il existe différentes manières d'associer la connexion à votre tâche :
-
Si vous créez une tâche visuelle à l'aide de AWS Glue Studio, vous pouvez sélectionner la connexion dans la liste des connexions de l'onglet Propriétés de la source de données — Connecteur.
-
Si vous développez la tâche dans un bloc-notes, utilisez la
%connections
magie pour définir le nom de la connexion :%glue_version 3.0 %connections <name-of-the iceberg-connection> %%configure { "--conf" : "job-specific Spark configurations, to be discussed later", "--datalake-formats" : "iceberg" }
-
Si vous créez la tâche à l'aide de l'éditeur de script, spécifiez la connexion dans l'onglet Détails de la tâche, sous Propriétés avancées, Connexions réseau supplémentaires.
Pour plus d'informations sur les procédures décrites dans cette section, consultez la section Utilisation de connecteurs et de connexions avec AWS Glue Studio dans la AWS Glue documentation.
Apporter vos propres fichiers JAR
Dans AWS Glue, vous pouvez également travailler avec Iceberg sans avoir à utiliser de connecteur. Cette approche est utile lorsque vous souhaitez conserver le contrôle de la version d'Iceberg et la mettre à jour rapidement. Pour utiliser cette option, téléchargez les fichiers JAR Iceberg requis dans un compartiment S3 de votre choix et référencez les fichiers dans votre AWS Glue tâche. Par exemple, si vous travaillez avec Iceberg 1.0.0, les fichiers JAR requis sont iceberg-spark-runtime-3.0_2.12-1.0.0.jar
url-connection-client-2.15.40.jar
, et. bundle-2.15.40.jar
Vous pouvez également hiérarchiser les fichiers JAR supplémentaires dans le chemin de classe en définissant le --user-jars-first
paramètre sur true
for the job.
Configurations Spark pour Iceberg dans AWS Glue
Cette section décrit les configurations Spark requises pour créer une tâche AWS Glue ETL pour un ensemble de données Iceberg. Vous pouvez définir ces configurations en utilisant la clé --conf
Spark avec une liste séparée par des virgules de toutes les clés et valeurs de configuration Spark. Vous pouvez utiliser la %%configure
magie d'un bloc-notes ou de la section Paramètres du Job de la AWS Glue Studio console.
%glue_version 3.0 %connections <name-of-the iceberg-connection> %%configure { "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions...", "--datalake-formats" : "iceberg" }
Configurez la session Spark avec les propriétés suivantes :
-
<catalog_name>
est le nom de votre catalogue de sessions Iceberg Spark. Remplacez-le par le nom de votre catalogue et n'oubliez pas de modifier les références dans toutes les configurations associées à ce catalogue. Dans votre code, vous devez ensuite faire référence à vos tables Iceberg avec le nom complet de la table, y compris le nom du catalogue de sessions Spark, comme suit :<catalog_name>.<database_name>.<table_name>
. -
<catalog_name>.<warehouse>
pointe vers le chemin Amazon S3 où vous souhaitez stocker vos données et métadonnées. -
Pour que le catalogue soit un AWS Glue Data Catalog, définissez
<catalog_name>.catalog-impl
surorg.apache.iceberg.aws.glue.GlueCatalog
. Cette clé est requise pour pointer vers une classe d'implémentation pour toute implémentation de catalogue personnalisé. Pour les catalogues pris en charge par Iceberg, consultez la Bonnes pratiques d'ordre général section Bonnes pratiques générales plus loin dans ce guide. -
org.apache.iceberg.aws.s3.S3FileIO
Utilisez-le comme pour tirer parti du chargement partitionné sur Amazon S3 pour un parallélisme élevé.<catalog_name>.io-impl
Par exemple, si un catalogue est appeléglue_iceberg
, vous pouvez configurer votre tâche à l'aide de plusieurs --conf
clés comme suit :
%%configure { "‐‐datalake-formats" : "iceberg", "‐‐conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions", "‐‐conf" : "spark.sql.catalog.glue_iceberg=org.apache.iceberg.spark.SparkCatalog", "‐‐conf" : "spark.sql.catalog.glue_iceberg.warehouse=s3://<your-warehouse-dir>=>/", "‐‐conf" : " spark.sql.catalog.glue_iceberg.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog ", "‐‐conf" : " spark.sql.catalog.glue_iceberg.io-impl=org.apache.iceberg.aws.s3.S3FileIO }
Vous pouvez également utiliser du code pour ajouter les configurations ci-dessus à votre script Spark comme suit :
spark = SparkSession.builder\ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions")\ .config("spark.sql.catalog.glue_iceberg", "org.apache.iceberg.spark.SparkCatalog")\ .config("spark.sql.catalog.glue_iceberg.warehouse","s3://<your-warehouse-dir>/")\ .config("spark.sql.catalog.glue_iceberg.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \ .config("spark.sql.catalog.glue_iceberg.io-impl", "org.apache.iceberg.aws.s3.S3FileIO") \ .getOrCreate()
Bonnes pratiques en matière AWS Glue d'emploi
Cette section fournit des directives générales pour ajuster les tâches Spark AWS Glue afin d'optimiser la lecture et l'écriture de données dans les tables Iceberg. Pour connaître les meilleures pratiques spécifiques à Iceberg, consultez la section Meilleures pratiques plus loin dans ce guide.
-
Utilisez la dernière version d'AWS Glue et mettez-la à niveau dès que possible. Les nouvelles versions améliorent les performances, réduisent les temps de démarrage et AWS Glue proposent de nouvelles fonctionnalités. Ils prennent également en charge les nouvelles versions de Spark qui peuvent être nécessaires pour les dernières versions d'Iceberg. Pour obtenir la liste des AWS Glue versions disponibles et des versions de Spark qu'elles prennent en charge, consultez la AWS Glue documentation.
-
Optimisez la mémoire des AWS Glue tâches : suivez les recommandations du billet de AWS blog Optimisez la gestion de la mémoire dans AWS Glue
. -
Utiliser AWS Glue Auto Scaling : lorsque vous activez Auto Scaling, il ajuste AWS Glue automatiquement le nombre de AWS Glue travailleurs de manière dynamique en fonction de votre charge de travail. Cela permet de réduire le coût de votre AWS Glue travail pendant les périodes de pointe, car AWS Glue le nombre de travailleurs est réduit lorsque la charge de travail est faible et que les travailleurs restent inactifs. Pour utiliser AWS Glue Auto Scaling, vous devez spécifier un nombre maximum de travailleurs auxquels votre AWS Glue travail peut être adapté. Pour plus d'informations, consultez la section Utilisation de la mise à l'échelle automatique pourAWS Glue dans la AWS Glue documentation.
-
Utilisez des connecteurs personnalisés ou ajoutez des dépendances à des bibliothèques. L'intégration AWS Glue native pour Iceberg est idéale pour démarrer avec Iceberg. Toutefois, pour les charges de travail de production, nous vous recommandons d'utiliser des conteneurs personnalisés ou d'ajouter des dépendances à des bibliothèques (comme indiqué précédemment dans ce guide) afin de contrôler totalement la version d'Iceberg. Cette approche vous permet de tirer parti des dernières fonctionnalités d'Iceberg et d'améliorer les performances dans le cadre de vos AWS Glue tâches.
-
Activez l'interface utilisateur Spark pour la surveillance et le débogage : vous pouvez également utiliser l'interface utilisateur Spark AWS Glue pour inspecter votre tâche Iceberg en visualisant les différentes étapes d'une tâche Spark dans un graphe acyclique dirigé (DAG) et en surveillant les tâches en détail. L'interface utilisateur Spark constitue un moyen efficace de résoudre les problèmes et d'optimiser les tâches d'Iceberg. Par exemple, vous pouvez identifier les phases d'étranglement associées à de nombreux remaniements ou à des pertes de disque afin d'identifier les opportunités de réglage. Pour plus d'informations, consultez la section Surveillance des tâches à l'aide de l'interface utilisateur Web d'Apache Spark dans la AWS Glue documentation.