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.
Création d'un plugin personnalisé avec Apache Hive et Hadoop
Amazon MWAA extrait le contenu d'un plugins.zip
à/usr/local/airflow/plugins
. Cela peut être utilisé pour ajouter des fichiers binaires à vos conteneurs. En outre, Apache Airflow exécute le contenu des fichiers Python contenus dans le plugins
dossier au démarrage, ce qui vous permet de définir et de modifier des variables d'environnement. L'exemple suivant explique les étapes de création d'un plugin personnalisé à l'aide d'Apache Hive et Hadoop dans un environnement Amazon Managed Workflows pour Apache Airflow et peut être combiné avec d'autres plugins et binaires personnalisés.
Rubriques
Version
-
L'exemple de code de cette page peut être utilisé avec Apache Airflow v1 en Python 3.7
.
-
Vous pouvez utiliser l'exemple de code présenté sur cette page avec Apache Airflow v2 en Python 3.10
.
Prérequis
Pour utiliser l'exemple de code présenté sur cette page, vous aurez besoin des éléments suivants :
Autorisations
-
Aucune autorisation supplémentaire n'est requise pour utiliser l'exemple de code présenté sur cette page.
Prérequis
Pour utiliser l'exemple de code de cette page, ajoutez les dépendances suivantes à votrerequirements.txt
. Pour en savoir plus, consultez Installation des dépendances Python.
Dépendances de téléchargement
Amazon MWAA extraira le contenu du fichier plugins.zip dans /usr/local/airflow/plugins
chaque MWAA planificateur et conteneur de travail Amazon. Ceci est utilisé pour ajouter des fichiers binaires à votre environnement. Les étapes suivantes décrivent comment assembler les fichiers nécessaires au plugin personnalisé.
-
Dans votre invite de commande, accédez au répertoire dans lequel vous souhaitez créer votre plugin. Par exemple :
cd plugins
-
Téléchargez Hadoop
depuis un miroir , par exemple : wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
-
Téléchargez Hive
depuis un miroir , par exemple : wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
-
Créez un répertoire. Par exemple :
mkdir hive_plugin
-
Extrayez Hadoop.
tar -xvzf hadoop-3.3.0.tar.gz -C hive_plugin
-
Extrayez Hive.
tar -xvzf apache-hive-3.1.2-bin.tar.gz -C hive_plugin
Plugin personnalisé
Apache Airflow exécutera le contenu des fichiers Python dans le dossier des plugins au démarrage. Ceci est utilisé pour définir et modifier les variables d'environnement. Les étapes suivantes décrivent l'exemple de code du plugin personnalisé.
-
Dans votre invite de commande, accédez au
hive_plugin
répertoire. Par exemple :cd hive_plugin
-
Copiez le contenu de l'exemple de code suivant et enregistrez-le localement
hive_plugin.py
dans lehive_plugin
répertoire.from airflow.plugins_manager import AirflowPlugin import os os.environ["JAVA_HOME"]="/usr/lib/jvm/jre" os.environ["HADOOP_HOME"]='/usr/local/airflow/plugins/hadoop-3.3.0' os.environ["HADOOP_CONF_DIR"]='/usr/local/airflow/plugins/hadoop-3.3.0/etc/hadoop' os.environ["HIVE_HOME"]='/usr/local/airflow/plugins/apache-hive-3.1.2-bin' os.environ["PATH"] = os.getenv("PATH") + ":/usr/local/airflow/plugins/hadoop-3.3.0:/usr/local/airflow/plugins/apache-hive-3.1.2-bin/bin:/usr/local/airflow/plugins/apache-hive-3.1.2-bin/lib" os.environ["CLASSPATH"] = os.getenv("CLASSPATH") + ":/usr/local/airflow/plugins/apache-hive-3.1.2-bin/lib" class EnvVarPlugin(AirflowPlugin): name = 'hive_plugin'
-
Copiez le contenu du texte suivant et enregistrez-le localement
.airflowignore
dans lehive_plugin
répertoire.hadoop-3.3.0 apache-hive-3.1.2-bin
Plugins.zip
Les étapes suivantes indiquent comment créerplugins.zip
. Le contenu de cet exemple peut être combiné avec d'autres plugins et binaires dans un seul plugins.zip
fichier.
-
Dans votre invite de commande, accédez au
hive_plugin
répertoire de l'étape précédente. Par exemple :cd hive_plugin
-
Compressez le contenu de votre
plugins
dossier.zip -r ../hive_plugin.zip ./
Exemple de code
Les étapes suivantes décrivent comment créer le DAG code qui testera le plugin personnalisé.
-
Dans votre invite de commande, accédez au répertoire dans lequel votre DAG code est stocké. Par exemple :
cd dags
-
Copiez le contenu de l'exemple de code suivant et enregistrez-le localement sous
hive.py
.from airflow import DAG from airflow.operators.bash_operator import BashOperator from airflow.utils.dates import days_ago with DAG(dag_id="hive_test_dag", schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag: hive_test = BashOperator( task_id="hive_test", bash_command='hive --help' )
Options de configuration du flux d'air
Si vous utilisez Apache Airflow v2, ajoutez-le en core.lazy_load_plugins : False
tant qu'option de configuration d'Apache Airflow. Pour en savoir plus, consultez la section Utilisation des options de configuration pour charger des plugins en 2.
Quelle est la prochaine étape ?
-
Découvrez comment charger le
requirements.txt
fichier dans cet exemple dans votre compartiment Amazon S3 dansInstallation des dépendances Python. -
Découvrez comment télécharger le DAG code de cet exemple dans le
dags
dossier de votre compartiment Amazon S3 dansAjout ou mise à jour des DAG. -
Découvrez comment charger le
plugins.zip
fichier dans cet exemple dans votre compartiment Amazon S3 dansInstallation de plugins personnalisés.