

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
<a name="samples-hive"></a>

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 for Apache Airflow et peut être combiné avec d'autres plugins et binaires personnalisés.

**Topics**
+ [Version](#samples-hive-version)
+ [Prérequis](#samples-hive-prereqs)
+ [Autorisations](#samples-hive-permissions)
+ [Prérequis](#samples-hive-dependencies)
+ [Dépendances de téléchargement](#samples-hive-install)
+ [Plug-in personnalisé](#samples-hive-plugins-code)
+ [Plugins.zip](#samples-hive-pluginszip)
+ [Exemple de code](#samples-hive-code)
+ [Options de configuration d'Airflow](#samples-hive-airflow-config)
+ [Quelle est la prochaine étape ?](#samples-hive-next-up)

## Version
<a name="samples-hive-version"></a>

[Vous pouvez utiliser l'exemple de code présenté sur cette page avec **Apache Airflow v2** en [Python 3.10](https://peps.python.org/pep-0619/) et **Apache Airflow v3** en Python 3.11.](https://peps.python.org/pep-0664/)

## Prérequis
<a name="samples-hive-prereqs"></a>

Pour utiliser l'exemple de code présenté sur cette page, vous aurez besoin des éléments suivants :
+ Un [environnement Amazon MWAA.](get-started.md)

## Autorisations
<a name="samples-hive-permissions"></a>

Aucune autorisation supplémentaire n'est requise pour utiliser l'exemple de code présenté sur cette page.

## Prérequis
<a name="samples-hive-dependencies"></a>

Pour utiliser l'exemple de code de cette page, ajoutez les dépendances suivantes à votre`requirements.txt`. Pour en savoir plus, reportez-vous à[Installation des dépendances Python](working-dags-dependencies.md).

```
-c https://raw.githubusercontent.com/apache/airflow/constraints-2.0.2/constraints-3.7.txt
apache-airflow-providers-amazon[apache.hive]
```

## Dépendances de téléchargement
<a name="samples-hive-install"></a>

Amazon MWAA extraira le contenu du fichier plugins.zip dans `/usr/local/airflow/plugins` chaque planificateur et conteneur de travail Amazon MWAA. Ceci est utilisé pour ajouter des fichiers binaires à votre environnement. Les étapes suivantes décrivent comment assembler les fichiers nécessaires au plugin personnalisé.

1. Dans votre invite de commande, accédez au répertoire dans lequel vous souhaitez créer votre plugin. Exemples :

   ```
   cd plugins
   ```

1. Téléchargez [Hadoop](https://hadoop.apache.org/) depuis un [miroir](https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz), par exemple :

   ```
   wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
   ```

1. Téléchargez [Hive](https://hive.apache.org/) depuis un [miroir](https://www.apache.org/dyn/closer.cgi/hive/), par exemple :

   ```
   wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
   ```

1. Créez un répertoire. Exemples :

   ```
   mkdir hive_plugin
   ```

1. Extrayez Hadoop.

   ```
   tar -xvzf hadoop-3.3.0.tar.gz -C hive_plugin
   ```

1. Extrayez Hive.

   ```
   tar -xvzf apache-hive-3.1.2-bin.tar.gz -C hive_plugin
   ```

## Plug-in personnalisé
<a name="samples-hive-plugins-code"></a>

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é.

1. Dans votre invite de commande, accédez au `hive_plugin` répertoire. Exemples :

   ```
   cd hive_plugin
   ```

1. Copiez le contenu de l'exemple de code suivant et enregistrez-le localement `hive_plugin.py` dans le `hive_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'
   ```

1. Copiez le contenu du texte suivant et enregistrez-le localement `.airflowignore` dans le `hive_plugin` répertoire.

   ```
   hadoop-3.3.0
   apache-hive-3.1.2-bin
   ```

## Plugins.zip
<a name="samples-hive-pluginszip"></a>

Les étapes suivantes expliquent comment créer`plugins.zip`. Le contenu de cet exemple peut être combiné avec d'autres plugins et binaires dans un seul `plugins.zip` fichier.

1. Dans votre invite de commande, accédez au `hive_plugin` répertoire de l'étape précédente. Exemples :

   ```
   cd hive_plugin
   ```

1. Compressez le contenu de votre `plugins` dossier.

   ```
   zip -r ../hive_plugin.zip ./
   ```

## Exemple de code
<a name="samples-hive-code"></a>

Les étapes suivantes décrivent comment créer le code DAG qui testera le plugin personnalisé.

1. Dans votre invite de commande, accédez au répertoire dans lequel votre code DAG est stocké. Exemples :

   ```
   cd dags
   ```

1. 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 d'Airflow
<a name="samples-hive-airflow-config"></a>

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, reportez-vous à la section [Utilisation des options de configuration pour charger des plug-ins en 2](configuring-env-variables.md#configuring-2.0-airflow-override).

## Quelle est la prochaine étape ?
<a name="samples-hive-next-up"></a>
+ Découvrez comment charger le `requirements.txt` fichier dans cet exemple dans votre compartiment Amazon S3 dans[Installation des dépendances Python](working-dags-dependencies.md).
+ Découvrez comment télécharger le code DAG dans cet exemple dans le `dags` dossier de votre compartiment Amazon S3 dans[Ajouter ou mettre à jour DAGs](configuring-dag-folder.md).
+ Découvrez comment charger le `plugins.zip` fichier dans cet exemple dans votre compartiment Amazon S3 dans[Installation de plugins personnalisés](configuring-dag-import-plugins.md).