

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como criar de um plug-in personalizado com o Apache Hive e o Hadoop
<a name="samples-hive"></a>

O Amazon MWAA extrai o conteúdo de um `plugins.zip` para `/usr/local/airflow/plugins`. Isso pode ser usado para adicionar binários aos seus contêineres. Além disso, o Apache Airflow executa o conteúdo dos arquivos Python na pasta `plugins` em *inicialização*, permitindo que você defina e modifique variáveis de ambiente. O exemplo a seguir mostra as etapas para criar um plug-in personalizado usando o Apache Hive e o Hadoop em um ambiente Amazon Managed Workflows for Apache Airflow e pode ser combinado com outros plug-ins e binários personalizados.

**Topics**
+ [Versão](#samples-hive-version)
+ [Pré-requisitos](#samples-hive-prereqs)
+ [Permissões](#samples-hive-permissions)
+ [Requisitos](#samples-hive-dependencies)
+ [Download de dependências](#samples-hive-install)
+ [Plug-in personalizado](#samples-hive-plugins-code)
+ [Plugins.zip](#samples-hive-pluginszip)
+ [Exemplo de código](#samples-hive-code)
+ [Opções de configuração do Airflow](#samples-hive-airflow-config)
+ [Próximas etapas](#samples-hive-next-up)

## Versão
<a name="samples-hive-version"></a>

É possível usar o exemplo de código nesta página com o **Apache Airflow v2** no [Python 3.10](https://peps.python.org/pep-0619/) e o **Apache Airflow v3** no [Python 3.11](https://peps.python.org/pep-0664/).

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

Para usar o código de amostra nesta página, você precisará do seguinte:
+ Um [ambiente Amazon MWAA](get-started.md).

## Permissões
<a name="samples-hive-permissions"></a>

Nenhuma permissão adicional é necessária para usar o exemplo de código nesta página.

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

Para usar o código de amostra nesta página, adicione as seguintes dependências ao seu `requirements.txt`. Consulte [Como instalar dependências do Python](working-dags-dependencies.md) para saber mais.

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

## Download de dependências
<a name="samples-hive-install"></a>

O Amazon MWAA extrairá o conteúdo do plugins.zip em `/usr/local/airflow/plugins` sobre cada contêiner de agendador e trabalho do Amazon MWAA. Isso é usado para adicionar binários ao seu ambiente. As etapas a seguir descrevem como montar os arquivos necessários para o plugin personalizado.

1. No prompt de comando, navegue até o diretório em que você gostaria de criar seu plug-in. Por exemplo:

   ```
   cd plugins
   ```

1. Baixe o [Hadoop](https://hadoop.apache.org/) de um [espelho](https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz), por exemplo:

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

1. Baixe o [Hive](https://hive.apache.org/) de um [espelho](https://www.apache.org/dyn/closer.cgi/hive/), por exemplo:

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

1. Crie um diretório. Por exemplo:

   ```
   mkdir hive_plugin
   ```

1. Extraia o Hadoop.

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

1. Extraia o Hive.

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

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

O Apache Airflow executará o conteúdo dos arquivos Python na pasta de plugins na inicialização. Isto é usado para definir e modificar variáveis de ambiente. As seguintes etapas descrevem o código de exemplo para o plugin personalizado.

1. Em um prompt de comando, navegue até o diretório `hive_plugin`. Por exemplo:

   ```
   cd hive_plugin
   ```

1. Copie o conteúdo da amostra de código a seguir e salve localmente como `hive_plugin.py` no diretório `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 o conteúdo do texto a seguir e salve localmente como `.airflowignore` no diretório `hive_plugin`.

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

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

As etapas a seguir explicam como criar `plugins.zip`. O conteúdo deste exemplo pode ser combinado com outros plug-ins e binários em um único arquivo `plugins.zip`.

1. Em sua prompt linha de comando, navegue até o diretório `hive_plugin` da etapa anterior. Por exemplo:

   ```
   cd hive_plugin
   ```

1. Compacte o conteúdo em sua pasta `plugins`.

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

## Exemplo de código
<a name="samples-hive-code"></a>

As etapas a seguir descrevem como criar o código do DAG que testará o plugin personalizado.

1. No prompt de comando, navegue até o diretório em que o código do DAG está armazenado. Por exemplo:

   ```
   cd dags
   ```

1. Copie o conteúdo da amostra de código a seguir e salve 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'
       )
   ```

## Opções de configuração do Airflow
<a name="samples-hive-airflow-config"></a>

Se você estiver usando o Apache Airflow v2, adicione `core.lazy_load_plugins : False` como uma opção de configuração do Apache Airflow. Para saber mais, consulte [Usar opções de configuração para carregar plug-ins em 2](configuring-env-variables.md#configuring-2.0-airflow-override).

## Próximas etapas
<a name="samples-hive-next-up"></a>
+ Saiba como fazer o upload do `requirements.txt` arquivo neste exemplo para seu bucket do Amazon S3 em [Como instalar dependências do Python](working-dags-dependencies.md).
+ Saiba como fazer o upload do código DAG neste exemplo para a pasta `dags` em seu bucket do Amazon S3 em [Como adicionar ou atualizar DAGs](configuring-dag-folder.md).
+ Saiba mais sobre como fazer o upload do `plugins.zip` arquivo neste exemplo para seu bucket do Amazon S3 em [Como instalar plug-ins personalizados](configuring-dag-import-plugins.md).