Exécution de tâches ETL Spark avec un temps de démarrage réduit - AWS Glue

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.

Exécution de tâches ETL Spark avec un temps de démarrage réduit

Les versions 2.0 et ultérieures de AWS Glue fournissent une infrastructure mise à jour pour exécuter les tâches Extract-transform-load (ETL, extraction, transformation et chargement) dans AWS Glue avec des temps de démarrage réduits. Grâce à la réduction des temps d'attente, les ingénieurs de données peuvent être plus productifs et augmenter leur interactivité avec AWS Glue. La réduction des écarts dans les temps de démarrage des tâches peut vous aider à respecter ou à dépasser vos SLA de mise à disposition des données pour analyse.

Pour utiliser cette fonction avec vos tâches ETL AWS Glue, sélectionnez 2.0 ou une version ultérieure pour la Glue version lors de la création de vos tâches.

Nouvelles fonctionnalités prises en charge

Cette section décrit les nouvelles fonctionnalités prises en charge par les versions 2.0 et ultérieures de AWS Glue.

Prise en charge de la spécification de modules Python supplémentaires au niveau de la tâche

Les versions 2.0 et ultérieures de AWS Glue vous permettent également de fournir des modules supplémentaires ou des versions différentes de Python au niveau de la tâche. Vous pouvez utiliser l'option --additional-python-modules avec une liste de modules Python séparés par des virgules pour ajouter un nouveau module ou modifier la version d'un module existant.

Par exemple, pour mettre à jour ou ajouter un nouveau module scikit-learn, utilisez la clé/valeur suivante : "--additional-python-modules", "scikit-learn==0.21.3".

En outre, l'option --additional-python-modules vous permet de spécifier un chemin d'accès Amazon S3 vers un module de roue Python. Par exemple :

--additional-python-modules s3://aws-glue-native-spark/tests/j4.2/ephem-3.7.7.1-cp37-cp37m-linux_x86_64.whl,s3://aws-glue-native-spark/tests/j4.2/fbprophet-0.6-py3-none-any.whl,scikit-learn==0.21.3

AWS Glue utilise le programme d'installation de package Python (pip3) pour installer les modules supplémentaires. Vous pouvez faire passer des options supplémentaires spécifiées par python-modules-installer-option dans pip3 pour installer les modules. Toute incompatibilité ou limitation de pip3 s'appliquera.

Modules Python déjà fournis dans la version 2.0 de AWS Glue

AWS Glue version 2.0 prend en charge les modules Python prêts à l’emploi suivants :

  • setuptools—45.2.0

  • subprocess32—3.5.4

  • ptvsd—4.3.2

  • pydevd—1.9.0

  • PyMySQL—0.9.3

  • docutils—0.15.2

  • jmespath—0.9.4

  • six—1.14.0

  • python_dateutil—2.8.1

  • urllib3—1.25.8

  • botocore—1.15.4

  • s3transfer—0.3.3

  • boto3—1.12.4

  • certifi—2019.11.28

  • chardet—3.0.4

  • idna—2.9

  • requests—2.23.0

  • pyparsing—2.4.6

  • enum34—1.1.9

  • pytz—2019.3

  • numpy—1.18.1

  • cycler—0.10.0

  • kiwisolver—1.1.0

  • scipy—1.4.1

  • pandas—1.0.1

  • pyarrow—0.16.0

  • matplotlib—3.1.3

  • pyhocon—0.3.54

  • mpmath—1.1.0

  • sympy—1.5.1

  • patsy—0.5.1

  • statsmodels—0.11.1

  • fsspec—0.6.2

  • s3fs—0.4.0

  • Cython—0.29.15

  • joblib—0.14.1

  • pmdarima—1.5.3

  • scikit-learn—0.22.1

  • tbats—1.0.9

Comportement de la journalisation

Les versions 2.0 et ultérieures de AWS Glue prennent en charge différents comportements de journalisation par défaut. Les différences sont les suivantes :

  • La journalisation se produit en temps réel.

  • Il existe des flux distincts pour les pilotes et les exécuteurs.

  • Pour chaque pilote et exécuteur, il existe deux flux : le flux de sortie et le flux d'erreurs.

Flux de pilotes et d'exécuteurs

Les flux de pilotes sont identifiés par l'ID d'exécution de la tâche. Les flux d'exécuteur sont identifiés par la tâche <ID d'exécution>_<ID de tâche d'exécution>. Par exemple :

  • "logStreamName": "jr_8255308b426fff1b4e09e00e0bd5612b1b4ec848d7884cebe61ed33a31789..._g-f65f617bd31d54bd94482af755b6cdf464542..."

Flux de sortie et d'erreurs

Le flux de sortie contient la sortie standard (stdout) de votre code. Le flux d'erreurs contient des messages de journalisation de votre code/bibliothèque.

  • Flux de journaux :

    • Les flux de journaux des pilotes contiennent <jr>, où <jr> est l'ID d'exécution de la tâche.

    • Les flux de journaux de l'exécuteur contiennent <jr>_<g>, où <g> est l'ID de tâche de l'exécuteur. Vous pouvez rechercher l'ID de la tâche d'exécution dans le journal des erreurs du pilote.

Les groupes de journaux par défaut pour la version 2.0 de AWS Glue sont les suivants :

  • /aws-glue/jobs/logs/output pour la sortie

  • /aws-glue/jobs/logs/error pour les erreurs

Lorsqu'une configuration de sécurité est fournie, les noms des groupes de journaux deviennent :

  • /aws-glue/jobs/<security configuration>-role/<Role Name>/output

  • /aws-glue/jobs/<security configuration>-role/<Role Name>/error

Sur la console, le lien Logs (Journaux) pointe vers le groupe de journaux de sortie et le lien Error (Erreur) pointe vers le groupe de journaux d'erreurs. Lorsque la journalisation continue est activée, les liens Logs (Journaux) pointent vers le groupe de journaux continus et le lien Output (sortie) pointe vers le groupe de journaux de sortie.

Règles de journalisation

Note

Le nom de groupe de journaux par défaut pour la journalisation continue est /aws-glue/jobs/logs-v2.

Dans les versions 2.0 et ultérieures de AWS Glue, la journalisation continue a le même comportement que dans la version 1.0 de AWS Glue

  • Groupe de journaux par défaut : /aws-glue/jobs/logs-v2

  • Flux du journal des pilotes : <jr>-pilote

  • Flux de journal de l'exécuteur : <jr>-<ID d'exécution>

    Le nom du groupe de journaux peut être modifié en définissant --continuous-log-logGroupName

    Le nom des flux de journaux peut être préfixé en définissant --continous-log-logStreamPrefix

Fonctions non prises en charge

Les fonctionnalités AWS Glue suivantes ne sont pas prises en charge :

  • Points de terminaison de développement

  • Les versions 2.0 et ultérieures de AWS Glue ne s'exécutent pas sur Apache YARN, les paramètres YARN ne s'appliquent donc pas

  • Les versions 2.0 et ultérieures de AWS Glue n'ont pas de système de fichiers distribué Hadoop (HDFS)

  • Les versions 2.0 et ultérieures de AWS Glue n'utilisent pas l'allocation dynamique, les métriques ExecutorAllocationManager ne sont donc pas disponibles

  • Pour les tâches des versions 2.0 et ultérieures de AWS Glue, spécifiez le nombre et le type d'employés, mais ne spécifiez pas de maxCapacity.

  • AWS Glue 2.0 et versions ultérieures ne prennent pas en charge s3n dès la première utilisation. Il est recommandé d'utiliser s3 ou s3a. Si les tâches doivent utiliser s3n pour une raison quelconque, vous pouvez transmettre l'argument supplémentaire suivant :

    --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem