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.
Développement et test AWS Glue scripts de tâches en local
Lorsque vous développez et testez votre AWS Glue pour les scripts de tâches Spark, plusieurs options sont disponibles :
AWS Glue Studio console
Visual editor (Éditeur visuel)
Éditeur de script
AWS Glue Studio bloc-notes
Sessions interactives
Bloc-notes Jupyter
Image Docker
Développement local
Développement à distance
AWS Glue Studio ETLbibliothèque
Développement local
Vous pouvez choisir l'une des options ci-dessus en fonction de vos besoins.
Si vous préférez ne pas coder ou moins d'expérience en matière de code, AWS Glue Studio l'éditeur visuel est un bon choix.
Si vous préférez une expérience de bloc-notes interactive, AWS Glue Studio un ordinateur portable est un bon choix. Pour plus d'informations, voir Utilisation de blocs-notes avec AWS Glue Studio and AWS Glue. Si vous souhaitez utiliser votre propre environnement local, les sessions interactives sont un bon choix. Pour plus d'informations, voir Utilisation de sessions interactives avec AWS Glue.
Si vous préférez une expérience de développement local/à distance, l'image Docker est un bon choix. Cela vous permet de développer et de tester les scripts de travail AWS Glue for Spark où vous le souhaitez, sans avoir à vous engager AWS Glue coût.
Si vous préférez le développement local sans Docker, installez AWS Glue ETLle répertoire local de la bibliothèque est un bon choix.
Développer en utilisant AWS Glue Studio
Le AWS Glue Studio l'éditeur visuel est une interface graphique qui facilite la création, l'exécution et le suivi de tâches d'extraction, de transformation et de chargement (ETL) dans AWS Glue. Vous pouvez composer visuellement des flux de travail de transformation des données et les exécuter de manière fluide sur AWS Glueest le moteur sans serveur ETL basé sur Apache Spark. Vous pouvez inspecter le schéma et les résultats des données à chaque étape de la tâche. Pour de plus amples informations, veuillez consulter le .AWS Glue Studio Guide de l'utilisateur
Développement à l'aide de sessions interactives
Les sessions interactives vous permettent de créer et de tester des applications à partir de l'environnement de votre choix. Pour plus d'informations, voir Utilisation de sessions interactives avec AWS Glue.
Développement à l'aide d'une image Docker
Note
Les instructions de cette section n'ont pas été testées sur les systèmes d'exploitation Microsoft Windows.
Pour le développement local et les tests sur les plateformes Windows, consultez le blog Building an AWS Glue ETLpipeline local sans AWS compte
Pour une plate-forme de données prête pour la production, le processus de développement et le pipeline CI/CD pour AWS Glue l'emploi est un sujet clé. Vous pouvez développer et tester de manière flexible AWS Glue jobs dans un conteneur Docker. AWS Glue héberge des images Docker sur Docker Hub pour configurer votre environnement de développement avec des utilitaires supplémentaires. Vous pouvez utiliser votre bloc-notes préféré IDE ou REPL en utilisant AWS Glue ETLbibliothèque. Cette rubrique décrit comment développer et tester AWS Glue jobs version 4.0 dans un conteneur Docker à l'aide d'une image Docker.
Les images Docker suivantes sont disponibles pour AWS Glue sur Docker Hub.
Dans AWS Glue version 4.0 :
amazon/aws-glue-libs:glue_libs_4.0.0_image_01
Dans AWS Glue version 3.0 :
amazon/aws-glue-libs:glue_libs_3.0.0_image_01
Dans AWS Glue version 2.0 :
amazon/aws-glue-libs:glue_libs_2.0.0_image_01
Ces images sont pour x86_64. Il est recommandé de tester sur cette architecture. Cependant, il peut être possible de retravailler une solution de développement locale sur des images de base non prises en charge.
Cet exemple décrit l'utilisation d'amazon/aws-glue-libs:glue_libs_4.0.0_image_01
et l'exécution du conteneur sur une machine locale. Cette image de conteneur a été testée pour AWS Glue version 3.3 Tâches Spark. Cette image contient les éléments suivants :
Amazon Linux
AWS Glue ETLbibliothèque (aws-glue-libs
) Apache Spark 3.3.0
Serveur d'historique Spark
Jupyter Lab
Livy
Autres dépendances de bibliothèque (le même ensemble que celles de AWS Glue système d'emploi)
Complétez l'une des sections suivantes en fonction de vos besoins :
Configurer le conteneur pour utiliser spark-submit
Configurez le conteneur pour utiliser REPL shell (PySpark)
Configurer le conteneur pour utiliser Pytest
Configurer le conteneur pour utiliser Jupyter Lab
Configurer le conteneur pour utiliser Visual Studio Code
Prérequis
Avant de commencer, assurez-vous que Docker est installé et que le démon Docker est en cours d'exécution. Pour obtenir des instructions d'installation, consultez la documentation Docker pour Mac
Pour plus d'informations sur les restrictions lors du développement AWS Glue codez localement, voir Restrictions de développement locales.
Configuration AWS
Pour activer AWS API les appels depuis le conteneur, configurez les AWS informations d'identification en suivant les étapes suivantes. Dans les sections suivantes, nous utiliserons ce profil AWS nommé.
-
Configurez le AWS CLI, en configurant un profil nommé. Pour plus d'informations sur AWS CLI la configuration, consultez la section Configuration et paramètres des fichiers d'identification dans la AWS CLI documentation.
Exécutez la commande suivante dans un terminal :
PROFILE_NAME="
<your_profile_name>
"
Vous devrez peut-être également définir la variable d'AWS_REGIONenvironnement pour spécifier Région AWS à qui envoyer les demandes.
Configuration et exécution du conteneur
La configuration du conteneur pour exécuter PySpark du code via la commande spark-submit inclut les étapes de haut niveau suivantes :
Extraire l'image de Docker Hub.
Exécuter le conteneur.
Extraction de l'image depuis Docker Hub
Exécutez la commande suivante pour extraire l'image de Docker Hub :
docker pull amazon/aws-glue-libs:glue_libs_4.0.0_image_01
Exécution du conteneur
Vous pouvez maintenant exécuter un conteneur en utilisant cette image. Vous pouvez choisir l'une des options suivantes en fonction de vos besoins.
spark-submit
Vous pouvez exécuter un AWS Glue script de travail en exécutant la spark-submit
commande sur le conteneur.
Écrivez le script et enregistrez-le sous le nom
sample1.py
dans le répertoire/local_path_to_workspace
. Un exemple de code est inclus en annexe de cette rubrique.$ WORKSPACE_LOCATION=/local_path_to_workspace $ SCRIPT_FILE_NAME=sample.py $ mkdir -p ${WORKSPACE_LOCATION}/src $ vim ${WORKSPACE_LOCATION}/src/${SCRIPT_FILE_NAME}
Exécutez la commande suivante pour exécuter la commande
spark-submit
sur le conteneur afin de soumettre une nouvelle application Spark :$ docker run -it -v ~/.aws:/home/glue_user/.aws -v $WORKSPACE_LOCATION:/home/glue_user/workspace/ -e AWS_PROFILE=$PROFILE_NAME -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 --name glue_spark_submit amazon/aws-glue-libs:glue_libs_4.0.0_image_01 spark-submit /home/glue_user/workspace/src/$SCRIPT_FILE_NAME ...22/01/26 09:08:55 INFO DAGScheduler: Job 0 finished: fromRDD at DynamicFrame.scala:305, took 3.639886 s root |-- family_name: string |-- name: string |-- links: array | |-- element: struct | | |-- note: string | | |-- url: string |-- gender: string |-- image: string |-- identifiers: array | |-- element: struct | | |-- scheme: string | | |-- identifier: string |-- other_names: array | |-- element: struct | | |-- lang: string | | |-- note: string | | |-- name: string |-- sort_name: string |-- images: array | |-- element: struct | | |-- url: string |-- given_name: string |-- birth_date: string |-- id: string |-- contact_details: array | |-- element: struct | | |-- type: string | | |-- value: string |-- death_date: string ...
-
(Facultatif) Configurez
spark-submit
pour qu’il corresponde à votre environnement. Par exemple, vous pouvez transmettre vos dépendances à la configuration--jars
. Pour plus d'informations, consultez la section Chargement dynamique des propriétés de Sparkdans la documentation de Spark.
REPLcoque (Pyspark)
Vous pouvez exécuter un shell REPL (en read-eval-print boucles) pour le développement interactif.
Exécutez la commande suivante pour exécuter la PySpark commande sur le conteneur afin de démarrer le REPL shell :
$ docker run -it -v ~/.aws:/home/glue_user/.aws -e AWS_PROFILE=$PROFILE_NAME -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 --name glue_pyspark amazon/aws-glue-libs:glue_libs_4.0.0_image_01 pyspark ... ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 3.1.1-amzn-0 /_/ Using Python version 3.7.10 (default, Jun 3 2021 00:02:01) Spark context Web UI available at http://56e99d000c99:4040 Spark context available as 'sc' (master = local[*], app id = local-1643011860812). SparkSession available as 'spark'. >>>
Pytest
Pour les tests unitaires, vous pouvez utiliser pytest pour AWS Glue Scripts de tâches Spark.
Exécutez les commandes suivantes pour la préparation.
$ WORKSPACE_LOCATION=/local_path_to_workspace $ SCRIPT_FILE_NAME=sample.py $ UNIT_TEST_FILE_NAME=test_sample.py $ mkdir -p ${WORKSPACE_LOCATION}/tests $ vim ${WORKSPACE_LOCATION}/tests/${UNIT_TEST_FILE_NAME}
Exécutez la commande suivante pour exécuter pytest
sur la suite de tests :
$ docker run -it -v ~/.aws:/home/glue_user/.aws -v $WORKSPACE_LOCATION:/home/glue_user/workspace/ -e AWS_PROFILE=$PROFILE_NAME -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 --name glue_pytest amazon/aws-glue-libs:glue_libs_4.0.0_image_01 -c "python3 -m pytest" starting org.apache.spark.deploy.history.HistoryServer, logging to /home/glue_user/spark/logs/spark-glue_user-org.apache.spark.deploy.history.HistoryServer-1-5168f209bd78.out *============================================================= test session starts ============================================================= *platform linux -- Python 3.7.10, pytest-6.2.3, py-1.11.0, pluggy-0.13.1 rootdir: /home/glue_user/workspace plugins: anyio-3.4.0 *collected 1 item * tests/test_sample.py . [100%] ============================================================== warnings summary =============================================================== tests/test_sample.py::test_counts /home/glue_user/spark/python/pyspark/sql/context.py:79: DeprecationWarning: Deprecated in 3.0.0. Use SparkSession.builder.getOrCreate() instead. DeprecationWarning) -- Docs: https://docs.pytest.org/en/stable/warnings.html ======================================================== 1 passed, *1 warning* in 21.07s ========================================================
Jupyter Lab
Vous pouvez démarrer Jupyter pour le développement interactif et les requêtes ad-hoc sur des blocs-notes.
Exécutez la commande suivante pour démarrer Jupyter Lab :
$ JUPYTER_WORKSPACE_LOCATION=/local_path_to_workspace/jupyter_workspace/ $ docker run -it -v ~/.aws:/home/glue_user/.aws -v $JUPYTER_WORKSPACE_LOCATION:/home/glue_user/workspace/jupyter_workspace/ -e AWS_PROFILE=$PROFILE_NAME -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 -p 8998:8998 -p 8888:8888 --name glue_jupyter_lab amazon/aws-glue-libs:glue_libs_4.0.0_image_01 /home/glue_user/jupyter/jupyter_start.sh ... [I 2022-01-24 08:19:21.368 ServerApp] Serving notebooks from local directory: /home/glue_user/workspace/jupyter_workspace [I 2022-01-24 08:19:21.368 ServerApp] Jupyter Server 1.13.1 is running at: [I 2022-01-24 08:19:21.368 ServerApp] http://faa541f8f99f:8888/lab [I 2022-01-24 08:19:21.368 ServerApp] or http://127.0.0.1:8888/lab [I 2022-01-24 08:19:21.368 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
Ouvrez http://127.0.0.1:8888/lab dans votre navigateur Web sur votre machine locale, pour voir l'interface utilisateur de Jupyter Lab.
Choisissez Glue Spark Local (PySpark) sous Notebook. Vous pouvez commencer à développer du code dans l'interface utilisateur interactive du bloc-notes Jupyter.
Configuration du conteneur pour utiliser Visual Studio Code
Prérequis :
Installez Visual Studio Code.
Installez Python
. Installez Visual Studio Code Remote - Containers
Ouvrez le dossier de l'espace de travail dans Visual Studio Code.
Sélectionnez Settings (Paramètres).
Choisissez Workspace (Espace de travail).
Choisissez Ouvrir les paramètres (JSON).
Collez ce qui suit JSON et enregistrez-le.
{ "python.defaultInterpreterPath": "/usr/bin/python3", "python.analysis.extraPaths": [ "/home/glue_user/aws-glue-libs/PyGlue.zip:/home/glue_user/spark/python/lib/py4j-0.10.9.5-src.zip:/home/glue_user/spark/python/", ] }
Étapes :
Exécutez le conteneur Docker.
$ docker run -it -v ~/.aws:/home/glue_user/.aws -v $WORKSPACE_LOCATION:/home/glue_user/workspace/ -e AWS_PROFILE=$PROFILE_NAME -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 --name glue_pyspark amazon/aws-glue-libs:glue_libs_4.0.0_image_01 pyspark
Démarrez Visual Studio Code.
Choisissez Remote Explorer (Explorateur distant) dans le menu de gauche, puis
amazon/aws-glue-libs:glue_libs_4.0.0_image_01
.Faites un clic droit et choisissez Attach to Container (Attacher au conteneur). Si une boîte de dialogue s'affiche, choisissez Got it (J'ai compris).
Ouvrir
/home/glue_user/workspace/
.Créez un PySpark script Glue et choisissez Run.
Vous verrez l'exécution réussie du script.
Annexe : AWS Glue exemple de code de tâche pour les tests
Cette annexe fournit des scripts sous la forme AWS Glue exemple de code de tâche à des fins de test.
sample.py : exemple de code pour utiliser le AWS Glue ETLbibliothèque avec un API appel Amazon S3
import sys from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from awsglue.utils import getResolvedOptions class GluePythonSampleTest: def __init__(self): params = [] if '--JOB_NAME' in sys.argv: params.append('JOB_NAME') args = getResolvedOptions(sys.argv, params) self.context = GlueContext(SparkContext.getOrCreate()) self.job = Job(self.context) if 'JOB_NAME' in args: jobname = args['JOB_NAME'] else: jobname = "test" self.job.init(jobname, args) def run(self): dyf = read_json(self.context, "s3://awsglue-datasets/examples/us-legislators/all/persons.json") dyf.printSchema() self.job.commit() def read_json(glue_context, path): dynamicframe = glue_context.create_dynamic_frame.from_options( connection_type='s3', connection_options={ 'paths': [path], 'recurse': True }, format='json' ) return dynamicframe if __name__ == '__main__': GluePythonSampleTest().run()
Le code ci-dessus nécessite des autorisations Amazon S3 pour entrer AWS IAM. Vous devez accorder la politique IAM gérée arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
ou une politique IAM personnalisée qui vous permet d'appeler ListBucket
et GetObject
pour le chemin Amazon S3.
test_sample.py : Exemple de code pour le test unitaire de sample.py.
import pytest from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from awsglue.utils import getResolvedOptions import sys from src import sample @pytest.fixture(scope="module", autouse=True) def glue_context(): sys.argv.append('--JOB_NAME') sys.argv.append('test_count') args = getResolvedOptions(sys.argv, ['JOB_NAME']) context = GlueContext(SparkContext.getOrCreate()) job = Job(context) job.init(args['JOB_NAME'], args) yield(context) job.commit() def test_counts(glue_context): dyf = sample.read_json(glue_context, "s3://awsglue-datasets/examples/us-legislators/all/persons.json") assert dyf.toDF().count() == 1961
Développement à l'aide du AWS Glue ETLbibliothèque
Le AWS Glue ETLla bibliothèque est disponible dans un compartiment Amazon S3 public et peut être utilisée par le système de compilation Apache Maven. Cela vous permet de développer et de tester vos scripts Python et Scala d'extraction, de transformation et de chargement (ETL) localement, sans avoir besoin d'une connexion réseau. Le développement local avec l’image Docker est recommandé, car il fournit un environnement correctement configuré pour l’utilisation de cette bibliothèque.
Le développement local est accessible à tous AWS Glue versions, y compris AWS Glue versions 0.9, 1.0, 2.0 et ultérieures. Pour plus d'informations sur les versions de Python et d'Apache Spark disponibles avec AWS Glue, voir leGlue version job property.
La bibliothèque est publiée avec la licence Amazon Software (https://aws.amazon.com/asl
Restrictions relatives au développement local
Tenez compte des restrictions suivantes lors de l'utilisation du AWS Glue Bibliothèque Scala à développer localement.
-
Évitez de créer un bocal d'assemblage (« fat jar » ou « uber jar ») avec AWS Glue bibliothèque car elle entraîne la désactivation des fonctionnalités suivantes :
-
AWS Glue Rédacteur de parquet (1Utilisation du format Parquet dans AWS Glue)
Ces fonctionnalités ne sont disponibles que dans AWS Glue système de travail.
-
La FindMatchestransformation n'est pas soutenue par le développement local.
-
Le SIMDCSVlecteur vectorisé n'est pas compatible avec le développement local.
-
La propriété customJdbcDriverS3Path permettant de charger le JDBC pilote depuis le chemin S3 n'est pas prise en charge par le développement local. Vous pouvez également télécharger le JDBC pilote dans votre local et le charger à partir de là.
-
La qualité des données Glue n'est pas prise en charge avec le développement local.
Développement local avec Python
Effectuez certaines étapes préalables, puis utilisez AWS Glue utilitaires pour tester et soumettre votre ETL script Python.
Prérequis pour le développement Python local
Procédez comme suit pour préparer un développement Python local :
-
Clonez le AWS Glue Référentiel Python depuis GitHub (https://github.com/awslabs/aws-glue-libs
). -
Effectuez l’une des actions suivantes :
Dans AWS Glue version 0.9, consultez la branche
glue-0.9
.Dans AWS Glue versions 1.0, consultez la branche
glue-1.0
. Toutes les versions ci-dessus AWS Glue La version 0.9 supporte Python 3.Dans AWS Glue versions 2.0, consultez la branche
glue-2.0
.Dans AWS Glue versions 3.0, consultez la branche
glue-3.0
.Dans AWS Glue version 4.0, consultez la
master
branche.
-
Installez Apache Maven à partir de l'emplacement suivant : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-common/apache-maven-3.6.0-bin.tar.gz
. -
Installez la distribution Apache Spark à partir d'un des emplacements suivants :
Dans AWS Glue version 0.9 : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-0.9/spark-2.2.1-bin-hadoop2.7.tgz
Dans AWS Glue version 1.0 : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-1.0/spark-2.4.3-bin-hadoop2.8.tgz
Dans AWS Glue version 2.0 : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-2.0/spark-2.4.3-bin-hadoop2.8.tgz
Dans AWS Glue version 3.0 : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-3.0/spark-3.1.1-amzn-0-bin-3.2.1-amzn-3.tgz
Dans AWS Glue version 4.0 : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-4.0/spark-3.3.0-amzn-1-bin-3.3.3-amzn-0.tgz
-
Exportez la variable d'environnement
SPARK_HOME
, en la définissant sur l'emplacement racine extrait de l'archive Spark. Par exemple :Dans AWS Glue version 0.9 :
export SPARK_HOME=/home/$USER/spark-2.2.1-bin-hadoop2.7
Dans AWS Glue versions 1.0 et 2.0 :
export SPARK_HOME=/home/$USER/spark-2.4.3-bin-spark-2.4.3-bin-hadoop2.8
Dans AWS Glue version 3.0 :
export SPARK_HOME=/home/$USER/spark-3.1.1-amzn-0-bin-3.2.1-amzn-3
Dans AWS Glue version 4.0 :
export SPARK_HOME=/home/$USER/spark-3.3.0-amzn-1-bin-3.3.3-amzn-0
Exécution de votre ETL script Python
Avec le plugin AWS Glue fichiers jar disponibles pour le développement local, vous pouvez exécuter AWS Glue Package Python local.
Utilisez les utilitaires et infrastructures suivants pour tester et exécuter votre script Python. Les commandes répertoriées dans le tableau suivant sont exécutées à partir du répertoire racine du AWS Glue Package Python
Utilitaire | Command | Description |
---|---|---|
AWS Glue Coquille | ./bin/gluepyspark |
Entrez et exécutez des scripts Python dans un shell qui s'intègre à AWS Glue ETLbibliothèques. |
AWS Glue Soumettre | ./bin/gluesparksubmit |
Soumettre un script Python complet pour l'exécution. |
Pytest | ./bin/gluepytest |
Écrire et exécuter des tests unitaires de votre code Python. Le module pytest doit être installé et disponible dans le PATH . Pour plus d'informations, consultez la documentation pytest |
Développement local avec Scala
Effectuez certaines étapes préalables, puis émettez une commande Maven pour exécuter votre ETL script Scala localement.
Prérequis pour le développement local Scala
Procédez comme suit pour vous préparer au développement local Scala.
Étape 1 : Installer le logiciel
Au cours de cette étape, vous installez le logiciel et définissez la variable d'environnement requise.
-
Installez Apache Maven à partir de l'emplacement suivant : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-common/apache-maven-3.6.0-bin.tar.gz
. -
Installez la distribution Apache Spark à partir d'un des emplacements suivants :
Dans AWS Glue version 0.9 : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-0.9/spark-2.2.1-bin-hadoop2.7.tgz
Dans AWS Glue version 1.0 : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-1.0/spark-2.4.3-bin-hadoop2.8.tgz
Dans AWS Glue version 2.0 : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-2.0/spark-2.4.3-bin-hadoop2.8.tgz
Dans AWS Glue version 3.0 : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-3.0/spark-3.1.1-amzn-0-bin-3.2.1-amzn-3.tgz
Dans AWS Glue version 4.0 : https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-4.0/spark-3.3.0-amzn-1-bin-3.3.3-amzn-0.tgz
-
Exportez la variable d'environnement
SPARK_HOME
, en la définissant sur l'emplacement racine extrait de l'archive Spark. Par exemple :Dans AWS Glue version 0.9 :
export SPARK_HOME=/home/$USER/spark-2.2.1-bin-hadoop2.7
Dans AWS Glue versions 1.0 et 2.0 :
export SPARK_HOME=/home/$USER/spark-2.4.3-bin-spark-2.4.3-bin-hadoop2.8
Dans AWS Glue version 3.0 :
export SPARK_HOME=/home/$USER/spark-3.1.1-amzn-0-bin-3.2.1-amzn-3
Dans AWS Glue version 4.0 :
export SPARK_HOME=/home/$USER/spark-3.3.0-amzn-1-bin-3.3.3-amzn-0
Étape 2 : Configurer votre projet Maven
Utilisez le pom.xml
fichier suivant comme modèle pour votre AWS Glue Applications Scala. Il contient les éléments dependencies
, repositories
et plugins
requis. Remplacez la chaîne Glue version
par l'une des actions suivantes :
-
4.0.0
pour AWS Glue version 4.0 -
3.0.0
pour AWS Glue version 3.0 -
1.0.0
pour AWS Glue version 1.0 ou 2.0 -
0.9.0
pour AWS Glue version 0.9
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.amazonaws</groupId> <artifactId>AWSGlueApp</artifactId> <version>1.0-SNAPSHOT</version> <name>${project.artifactId}</name> <description>AWS ETL application</description> <properties> <scala.version>2.11.1 for AWS Glue 2.0 or below, 2.12.7 for AWS Glue 3.0 and 4.0</scala.version> <glue.version>Glue version with three numbers (as mentioned earlier)</glue.version> </properties> <dependencies> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>${scala.version}</version> <!-- A "provided" dependency, this will be ignored when you package your application --> <scope>provided</scope> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>AWSGlueETL</artifactId> <version>${glue.version}</version> <!-- A "provided" dependency, this will be ignored when you package your application --> <scope>provided</scope> </dependency> </dependencies> <repositories> <repository> <id>aws-glue-etl-artifacts</id> <url>https://aws-glue-etl-artifacts.s3.amazonaws.com/release/</url> </repository> </repositories> <build> <sourceDirectory>src/main/scala</sourceDirectory> <plugins> <plugin> <!-- see http://davidb.github.com/scala-maven-plugin --> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.4.0</version> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.6.0</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <systemProperties> <systemProperty> <key>spark.master</key> <value>local[*]</value> </systemProperty> <systemProperty> <key>spark.app.name</key> <value>localrun</value> </systemProperty> <systemProperty> <key>org.xerial.snappy.lib.name</key> <value>libsnappyjava.jnilib</value> </systemProperty> </systemProperties> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.0.0-M2</version> <executions> <execution> <id>enforce-maven</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireMavenVersion> <version>3.5.3</version> </requireMavenVersion> </rules> </configuration> </execution> </executions> </plugin> <!-- The shade plugin will be helpful in building a uberjar or fatjar. You can use this jar in the AWS Glue runtime environment. For more information, see https://maven.apache.org/plugins/maven-shade-plugin/ --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <configuration> <!-- any other shade configurations --> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Exécution de votre script Scala ETL
Exécutez la commande suivante depuis le répertoire racine du projet Maven pour exécuter votre script ScalaETL.
mvn exec:java -Dexec.mainClass="
mainClass
" -Dexec.args="--JOB-NAMEjobName
"
Remplacez mainClass
avec le nom de classe complet de la classe principale du script. Remplacez jobName
avec le nom de tâche souhaité.
Configuration d'un environnement de test
Pour des exemples de configuration d'un environnement de test local, consultez les articles de blog suivants :
Si vous souhaitez utiliser des terminaux de développement ou des blocs-notes pour tester vos ETL scripts, consultez. Développement de scripts à l'aide de points de terminaison de développement
Note
Les points de terminaison de développement ne sont pas pris en charge pour une utilisation avec AWS Glue jobs en version 2.0. Pour plus d'informations, consultez Exécution de ETL tâches Spark avec des temps de démarrage réduits.