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
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.
Temas
Versión
-
El código de ejemplo de esta página se puede utilizar con Apache Airflow v1 en Python 3.7
.
-
Puede usar el código de ejemplo que aparece en esta página con Apache Airflow v2 en Python 3.10
.
Requisitos previos
Para usar el código de muestra de esta página, necesitará lo siguiente:
Permisos
-
No se necesitan permisos adicionales para usar el código de ejemplo de esta página.
Requisitos
Para usar el código de ejemplo de esta página, agregue las siguientes dependencias a su requirements.txt
. Para obtener más información, consulte Instalación de dependencias de Python.
Descarga de dependencias
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.
-
En el símbolo del sistema, vaya hasta el directorio en el que desee crear el complemento. Por ejemplo:
cd plugins
-
Descargue Hadoop
desde una réplica , por ejemplo: wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
-
Descargue Hive
desde una replica , por ejemplo: wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
-
Cree un directorio. Por ejemplo:
mkdir hive_plugin
-
Extraiga Hadoop.
tar -xvzf hadoop-3.3.0.tar.gz -C hive_plugin
-
Extraiga Hive.
tar -xvzf apache-hive-3.1.2-bin.tar.gz -C hive_plugin
Complemento personalizado
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.
-
En una línea de comando, vaya al directorio
hive_plugin
. Por ejemplo:cd hive_plugin
-
Copie el contenido del siguiente ejemplo de código y guárdelo localmente como
hive_plugin.py
en el directoriohive_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'
-
Copie el contenido del siguiente texto y guárdelo localmente como
.airflowignore
en el directoriohive_plugin
.hadoop-3.3.0 apache-hive-3.1.2-bin
Plugins.zip
Los siguientes pasos muestran 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
.
-
En el símbolo del sistema, vaya hasta el directorio
hive_plugin
del paso anterior. Por ejemplo:cd hive_plugin
-
Comprima el contenido de la carpeta
plugins
.zip -r ../hive_plugin.zip ./
Código de ejemplo
En los siguientes pasos se explica cómo crear el código DAG que probará el complemento personalizado.
-
En el símbolo del sistema, vaya hasta el directorio en el que esté almacenado el código DAG. Por ejemplo:
cd dags
-
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
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.
Siguientes pasos
-
Aprenda a cargar el archivo
requirements.txt
de este ejemplo a su bucket de Amazon S3 en Instalación de dependencias de Python. -
Aprenda a cargar el código el DAG de este ejemplo en la carpeta
dags
de su bucket de Amazon S3 en Añadir o actualizar DAGs. -
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.