を使用した ETL スクリプトのローカルでの開発とテストAWSGlue ライブラリ - AWS Glue

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

を使用した ETL スクリプトのローカルでの開発とテストAWSGlue ライブラリ

-AWSGlue Scala ライブラリは Amazon S3 パブリックバケットで使用でき、Apache Maven ビルドシステムで消費できます。これにより、ネットワーク接続を必要とせずに Python および Scala の抽出、変換、ロード (ETL) スクリプトをローカルで開発およびテストできます。

ローカル開発はすべての人に利用できます。AWSGlue のバージョンAWSGlue バージョン 0.9 およびAWSGlue バージョン 1.0 以降。で使用できる Python および Apache Spark のバージョンに関する情報については、AWSGlue については、Glue version job property

ライブラリは、Amazon ソフトウェアライセンス (http://aws.amazon.com/asl) とともにリリースされています。

注記

このセクションの手順については、Microsoft Windows オペレーティングシステムではテストされていません。

Windows プラットフォームでのローカル開発およびテストについては、を構築するにはAWSETLパイプラインをローカルGlue するAWSアカウント

ローカル開発の制限

使用時には、次の制限事項に注意してください。AWSローカルで開発するScalaライブラリをGlue します。

Dockerイメージを使用してローカルに開発する

Dockerイメージでは、コンテナをセットアップする2段階のプロセスを提供しますAWSバイナリとJupyter/ZeppelinノートブックサーバをGlue します。詳細については、「」を参照してください。開発者AWSコンテナを使用して ETL ジョブをローカルGlue する

Python を使用したローカルでの開発

いくつかの前提条件手順を完了し、AWSPython ETL スクリプトをテストして送信するためのユーティリティをGlue します。

ローカル Python 開発の前提条件

ローカル Python 開発に備えるには、以下の手順を実行します。

  1. クローンを作成するAWSGitHub から Python リポジトリのGlue (https://github.com/awslabs/aws-glue-libs).

  2. 次のいずれかを行ってください。

    • を使用する場合AWSGlue バージョン 0.9 の場合は、masterブランチ。

    • を使用する場合AWSGlue バージョン 1.0 以降、ブランチglue-1.0。これらのバージョンは Python 3 をサポートしています。

  3. Apache Maven を https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-common/apache-maven-3.6.0-bin.tar.gz からインストールします。

  4. Apache Spark ディストリビューションを次のいずれかの場所からインストールします。

  5. SPARK_HOME 環境変数をエクスポートし、Spark アーカイブから抽出したルートの場所に設定します。次に例を示します。

    • を使用する場合AWSGlue バージョン 0.9:export SPARK_HOME=/home/$USER/spark-2.2.1-bin-hadoop2.7

    • を使用する場合AWSGlue バージョン 1.0 以降:export SPARK_HOME=/home/$USER/spark-2.4.3-bin-spark-2.4.3-bin-hadoop2.8

Python ETL スクリプトの実行

とAWSローカル開発に使用できる Glue jar ファイルは、AWSPythonパッケージをローカルGlue します。

Python スクリプトをテストして実行するには、次のユーティリティとフレームワークを使用します。次の表に示すコマンドは、ルートディレクトリから実行されます。AWSGlue Pythonパッケージ

ユーティリティ コマンド 説明
AWSGlue Shell ./bin/gluepyspark 統合されるシェルで Python スクリプトを入力して実行します。AWSETLライブラリGlue します。
AWSGlue Submit ./bin/gluesparksubmit 実行のために完全な Python スクリプトを送信します。
Pytest ./bin/gluepytest Python コードのユニットテストを記述して実行します。pytest モジュールが PATH にインストールされ、使用可能になっている必要があります。詳細については、pytest のドキュメントを参照してください。

Scala を使用したローカルでの開発

いくつかの前提条件ステップを完了してから、Maven コマンドを発行して Scala ETL スクリプトをローカルで実行します。

ローカル Scala 開発の前提条件

ローカルの Scala 開発に備えるには、以下のステップを実行します。

ステップ 1: ソフトウェアのインストール

このステップでは、ソフトウェアをインストールし、必要な環境変数を設定します。

  1. Apache Maven を https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-common/apache-maven-3.6.0-bin.tar.gz からインストールします。

  2. Apache Spark ディストリビューションを次のいずれかの場所からインストールします。

  3. SPARK_HOME 環境変数をエクスポートし、Spark アーカイブから抽出したルートの場所に設定します。次に例を示します。

    • を使用する場合AWSGlue バージョン 0.9:export SPARK_HOME=/home/$USER/spark-2.2.1-bin-hadoop2.7

    • を使用する場合AWSGlue バージョン 1.0 以降:export SPARK_HOME=/home/$USER/spark-2.4.3-bin-spark-2.4.3-bin-hadoop2.8

ステップ 2: Maven プロジェクトの設定

以下のpom.xmlファイルをAWSScalaアプリケーションをGlue します。これには、必須の dependenciesrepositoriesplugins 要素が含まれています。置き換えGlue version文字列が1.0.0forAWSGlue バージョン 1.0 以降、または0.9.0forAWSGlue バージョン 0.9.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.amazonaws</groupId> <artifactId>AWSGlueApp</artifactId> <version>1.0-SNAPSHOT</version> <name>${project.artifactId}</name> <description>AWS ETL application</description> <properties> <scala.version>2.11.1</scala.version> </properties> <dependencies> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>${scala.version}</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>AWSGlueETL</artifactId> <version>Glue version</version> </dependency> </dependencies> <repositories> <repository> <id>aws-glue-etl-artifacts</id> <url>https://aws-glue-etl-artifacts.s3.amazonaws.com/release/</url> </repository> </repositories> <build> <sourceDirectory>src/main/scala</sourceDirectory> <plugins> <plugin> <!-- see http://davidb.github.com/scala-maven-plugin --> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.4.0</version> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.6.0</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <systemProperties> <systemProperty> <key>spark.master</key> <value>local[*]</value> </systemProperty> <systemProperty> <key>spark.app.name</key> <value>localrun</value> </systemProperty> <systemProperty> <key>org.xerial.snappy.lib.name</key> <value>libsnappyjava.jnilib</value> </systemProperty> </systemProperties> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.0.0-M2</version> <executions> <execution> <id>enforce-maven</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireMavenVersion> <version>3.5.3</version> </requireMavenVersion> </rules> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>

Scala ETL スクリプトの実行

Maven プロジェクトのルートディレクトリから次のコマンドを実行して、Scala ETL スクリプトを実行します。

mvn exec:java -Dexec.mainClass="mainClass" -Dexec.args="--JOB-NAME jobName"

mainClass を、スクリプトのメインクラスの完全修飾クラス名に置き換えます。jobName を目的のジョブ名に置き換えます。

テスト環境の設定

ローカルテスト環境の設定例については、以下のブログ記事を参照してください。

開発エンドポイントまたはノートブックを使用して ETL スクリプトをテストする場合は、開発エンドポイントを使用してスクリプトを開発する

注記

開発エンドポイントはAWSGlue バージョン 2.0 のジョブ。詳細については、「」を参照してください。起動時間の短縮による Spark ETLジョブの実行