Scala を使用した AWS Glue ETL スクリプトのプログラミング
AWS Glue コンソールを使用して Scala ETL (抽出、変換、ロード) プログラムを自動的に生成し、必要に応じて変更してからジョブに割り当てることができます。または、独自のプログラムを最初から記述することもできます。詳細については、「での Spark ジョブのジョブプロパティの設定 AWS Glue」を参照してください。次に AWS Glue はサーバーで Scala プログラムをコンパイルし、その後、関連付けられているジョブを実行します。
プログラムをエラーなしでコンパイルして正常に実行するには、ジョブで実行する前にプログラムを REPL (Read-Eval-Print Loop) や Jupyter Notebook の開発エンドポイントにロードし、テストすることが重要です。コンパイルプロセスはサーバーで実行されるため、そこで問題が発生してもよく確認できません。
開発エンドポイントでの Jupyter Notebook を使用した Scala ETL プログラムのテスト
AWS Glue 開発エンドポイントで Scala プログラムをテストするには、「開発エンドポイントの追加」の説明に従って開発エンドポイントを設定します。
次に、コンピュータでローカルに実行されているか、Amazon EC2 ノートブックサーバーでリモートに実行されている Jupyter Notebook に開発エンドポイントを接続します。Jupyter Notebook のローカルバージョンをインストールするには、「チュートリアル: JupyterLab の Jupyter Notebook」の手順に従います。
Scala コードの実行とノートブックでの PySpark コードの実行が唯一異なる点は、ノートブックでは以下のコードを使用して各パラグラフを開始する必要があることです。
%spark
これにより、ノートブックサーバーがデフォルトで Spark インタープリタの PySpark フレーバーになるのを防止できます。
Scala REPL での Scala ETL プログラムのテスト
AWS Glue Scala REPL を使用して開発エンドポイントで Scala プログラムをテストできます。「チュートリアル: SageMaker ノートブックを使用する」の手順に従います。ただし、SSH-to-REPL コマンドの最後では、-t gluepyspark
を -t glue-spark-shell
に置き換えます。これにより、AWS Glue Scala REPL が呼び出されます。
完了後に REPL を閉じるには、「sys.exit
」と入力します。