

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Creación de un complemento personalizado con Apache Hive y Hadoop
<a name="samples-hive"></a>

Amazon MWAA extrae el contenido de un `plugins.zip` a `/usr/local/airflow/plugins`. Esto se puede utilizar para añadir archivos binarios a sus contenedores. Además, Apache Airflow ejecuta el contenido de los archivos de Python de la carpeta `plugins` en el *inicio*, lo que permite establecer y modificar las variables de entorno. En el siguiente ejemplo se explican los pasos necesarios para crear un complemento personalizado con Apache Hive y Hadoop en un entorno de Amazon Managed Workflows para Apache Airflow. Además, se puede combinar con otros complementos y binarios personalizados.

**Topics**
+ [Versión](#samples-hive-version)
+ [Requisitos previos](#samples-hive-prereqs)
+ [Permisos](#samples-hive-permissions)
+ [Requisitos](#samples-hive-dependencies)
+ [Descarga de dependencias](#samples-hive-install)
+ [Complemento personalizado](#samples-hive-plugins-code)
+ [Plugins.zip](#samples-hive-pluginszip)
+ [Código de ejemplo](#samples-hive-code)
+ [Opciones de configuración de Airflow](#samples-hive-airflow-config)
+ [Siguientes pasos](#samples-hive-next-up)

## Versión
<a name="samples-hive-version"></a>

Puede usar el código de ejemplo que aparece en esta página con **Apache Airflow v2** en [Python 3.10](https://peps.python.org/pep-0619/) y **Apache Airflow v3** en [Python 3.11](https://peps.python.org/pep-0664/).

## Requisitos previos
<a name="samples-hive-prereqs"></a>

Para usar el código de muestra de esta página, necesitará lo siguiente:
+ Un [entorno de Amazon MWAA](get-started.md).

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

No se necesitan permisos adicionales para usar el código de ejemplo de esta página.

## Requisitos
<a name="samples-hive-dependencies"></a>

Para usar el código de ejemplo de esta página, agregue las siguientes dependencias a su `requirements.txt`. Consulte [Instalación de dependencias de Python](working-dags-dependencies.md) para obtener más información.

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

## Descarga de dependencias
<a name="samples-hive-install"></a>

Amazon MWAA extraerá el contenido del archivo plugins.zip en `/usr/local/airflow/plugins` en cada contenedor de procesos de trabajo y programador de Amazon MWAA. Se utiliza para añadir binarios a su entorno. En los siguientes pasos se describe cómo ensamblar los archivos necesarios para el complemento personalizado.

1. En el símbolo del sistema, vaya hasta el directorio en el que desee crear el complemento. Por ejemplo:

   ```
   cd plugins
   ```

1. Descargue [Hadoop](https://hadoop.apache.org/) desde una [réplica](https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz), por ejemplo:

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

1. Descargue [Hive](https://hive.apache.org/) desde una [replica](https://www.apache.org/dyn/closer.cgi/hive/), por ejemplo:

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

1. Cree un directorio. Por ejemplo:

   ```
   mkdir hive_plugin
   ```

1. Extraiga Hadoop.

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

1. Extraiga Hive.

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

## Complemento personalizado
<a name="samples-hive-plugins-code"></a>

Apache Airflow ejecutará el contenido de los archivos de Python en la carpeta de complementos durante el arranque. Esto se usa para establecer y modificar variables de entorno. En los siguientes pasos se describe el código de muestra del complemento personalizado.

1. En una línea de comando, vaya al directorio `hive_plugin`. Por ejemplo:

   ```
   cd hive_plugin
   ```

1. Copie el contenido del siguiente ejemplo de código y guárdelo localmente como `hive_plugin.py` en el directorio `hive_plugin`.

   ```
   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. Copie el contenido del siguiente texto y guárdelo localmente como `.airflowignore` en el directorio `hive_plugin`.

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

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

En los siguientes pasos, se explica cómo crear `plugins.zip`. El contenido de este ejemplo se puede combinar con otros complementos y archivos binarios en un solo archivo `plugins.zip`.

1. En el símbolo del sistema, vaya hasta el directorio `hive_plugin` del paso anterior. Por ejemplo:

   ```
   cd hive_plugin
   ```

1. Comprima el contenido de la carpeta `plugins`.

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

## Código de ejemplo
<a name="samples-hive-code"></a>

En los siguientes pasos se explica cómo crear el código DAG que probará el complemento personalizado.

1. En el símbolo del sistema, vaya hasta el directorio en el que esté almacenado el código DAG. Por ejemplo:

   ```
   cd dags
   ```

1. Copie el contenido del código de ejemplo siguiente y guárdelo localmente como `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'
       )
   ```

## Opciones de configuración de Airflow
<a name="samples-hive-airflow-config"></a>

Si utiliza Apache Airflow v2, agregue `core.lazy_load_plugins : False` como opción de configuración de Apache Airflow. Para obtener más información, consulte [Uso de las opciones de configuración para cargar complementos en la versión 2](configuring-env-variables.md#configuring-2.0-airflow-override).

## Siguientes pasos
<a name="samples-hive-next-up"></a>
+ Aprenda a cargar el archivo `requirements.txt` de este ejemplo a su bucket de Amazon S3 en [Instalación de dependencias de Python](working-dags-dependencies.md).
+ Aprenda a cargar el código el DAG de este ejemplo en la carpeta `dags` de su bucket de Amazon S3 en [Cómo añadir o actualizar DAG](configuring-dag-folder.md).
+ Obtenga más información sobre cómo cargar el archivo `plugins.zip` de este ejemplo a su bucket de Amazon S3 en [Instalación de complementos personalizados](configuring-dag-import-plugins.md).