

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Apache Hive と Hadoop を使ったカスタムプラグインの作成
<a name="samples-hive"></a>

Amazon MWAA は `plugins.zip` から `/usr/local/airflow/plugins` にコンテンツを抽出します。これを使用して、コンテナにバイナリを追加できます。さらに、Apache Airflow は*起動*時に `plugins` フォルダ内の Python ファイルの内容を実行するため、環境変数を設定および変更できます。以下のサンプルでは、Amazon Managed Workflows for Apache Airflow 環境で Apache Hive と Hadoop を使用してカスタムプラグインを作成する手順を説明し、他のカスタムプラグインやバイナリと組み合わせることができます。

**Topics**
+ [バージョン](#samples-hive-version)
+ [前提条件](#samples-hive-prereqs)
+ [アクセス許可](#samples-hive-permissions)
+ [要件](#samples-hive-dependencies)
+ [依存関係のダウンロード](#samples-hive-install)
+ [カスタムプラグイン](#samples-hive-plugins-code)
+ [Plugins.zip](#samples-hive-pluginszip)
+ [コードサンプル](#samples-hive-code)
+ [Airflow 設定オプション](#samples-hive-airflow-config)
+ [次のステップ](#samples-hive-next-up)

## バージョン
<a name="samples-hive-version"></a>

このページのコード例は、[Python 3.10](https://peps.python.org/pep-0619/) の **Apache Airflow v2** および [Python 3.11](https://peps.python.org/pep-0664/) の **Apache Airflow v3** で使用可能です。

## 前提条件
<a name="samples-hive-prereqs"></a>

このページのサンプルコードを使用するには、以下が必要です。
+ [Amazon MWAA 環境](get-started.md)。

## アクセス許可
<a name="samples-hive-permissions"></a>

このページのコード例を使用する場合、追加のアクセス許可は必要ありません。

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

このページのサンプルコードを使用するには、次の依存関係を `requirements.txt` に追加してください。詳細については、[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]
```

## 依存関係のダウンロード
<a name="samples-hive-install"></a>

Amazon MWAA は plugins.zip のコンテンツを各 Amazon MWAA スケジューラーとワーカーコンテナの `/usr/local/airflow/plugins` に抽出します。これはバイナリを環境に追加するために使用されます。次のステップでは、カスタムプラグインに必要なファイルを組み立てる方法について説明します。

1. コマンドプロンプトで、プラグインを作成したいディレクトリに移動します。例:

   ```
   cd plugins
   ```

1. [ミラー](https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz)から [Hadoop](https://hadoop.apache.org/) をダウンロードします。例:

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

1. [ミラー](https://www.apache.org/dyn/closer.cgi/hive/)から [Hive](https://hive.apache.org/) をダウンロードします。例:

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

1. ディレクトリを作成します。例:

   ```
   mkdir hive_plugin
   ```

1. Hadoop を抽出します。

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

1. Hive を抽出します。

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

## カスタムプラグイン
<a name="samples-hive-plugins-code"></a>

Apache Airflow は、起動時にプラグインフォルダにある Python ファイルの内容を実行します。これは環境変数の設定と変更に使用されます。次のステップでは、カスタムプラグインのサンプルコードを説明します。

1. コマンドプロンプトで、`hive_plugin` ディレクトリに移動します。例:

   ```
   cd hive_plugin
   ```

1. 次のコードサンプルの内容をコピーし、同じ `hive_plugin` ディレクトリで、`hive_plugin.py` と名前を付けてローカルに保存します。

   ```
   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. 次のテキストの内容をコピーし、`hive_plugin` ディレクトリに `.airflowignore` としてローカルに保存します。

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

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

以下のステップは、`plugins.zip` を作成する方法について説明します。この例の内容は、他のプラグインやバイナリと組み合わせて 1 つの `plugins.zip` のファイルにすることができます。

1. コマンドプロンプトで、前のステップの `hive_plugin` ディレクトリに移動します。例:

   ```
   cd hive_plugin
   ```

1. `plugins` フォルダ内のコンテンツを圧縮します。

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

## コードサンプル
<a name="samples-hive-code"></a>

次のステップでは、カスタムプラグインをテストする DAG コードを作成する方法について説明します。

1. コマンドプロンプトで、DAG コードが保存されているディレクトリに移動します。例:

   ```
   cd dags
   ```

1. 以下のコードサンプルの内容をコピーし、ローカルに `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'
       )
   ```

## Airflow 設定オプション
<a name="samples-hive-airflow-config"></a>

Apache Airflow v2 を使用している場合、`core.lazy_load_plugins : False` を Apache Airflow の設定オプションとして追加してください。詳細については、[2 の設定オプションによるプラグインの読み込み](configuring-env-variables.md#configuring-2.0-airflow-override) を参照してください。

## 次のステップ
<a name="samples-hive-next-up"></a>
+ この例の `requirements.txt` ファイルを Amazon S3 バケットにアップロードする方法について詳しくは、[Python 依存関係のインストール](working-dags-dependencies.md) をご覧ください。
+ この例の DAG コードを Amazon S3 バケットの `dags` フォルダにアップロードする方法については、[DAG の追加と更新](configuring-dag-folder.md) を参照してください。
+ この例の `plugins.zip` ファイルを Amazon S3 バケットにアップロードする方法について詳しくは、[カスタムプラグインのインストール](configuring-dag-import-plugins.md) をご覧ください。