AWS Glueを使ってみた 第2回

Pocket

渡邊です。

前回(https://recipe.kc-cloud.jp/archives/11724)に引き続き、AWS Glueを動かすこと自体を目的とし、なるべく簡単な構成と処理内容で試してみようと思います。サンプルデータは、機械学習でよく用いられるアヤメのデータを使用しています。

構成

構築する構成を下図に再掲します。
S3バケットからデータをインプットし、同じS3バケットへアウトプットします。

全体の流れ

第2回である今回は、『IAMの変更』から進めます。

第1回
・サンプルデータの準備
・S3バケットとフォルダの作成
・Databaseの作成
・Crawlerの作成と実行
・Tableの確認

第2回
・IAMの変更
・Jobの作成と実行
・結果の確認

IAMの変更

IAMの画面で、前回作成したIAMロールを選択します。

『ポリシーの編集』ボタンをクリックします。

『リソース』が表示されている部分をクリックします。

『編集』ボタンをクリックします。


ARNの指定を『arn:aws:s3:::[作成したS3バケット名]/*』に編集して、『変更の保存』ボタンをクリックします。


『Review policy』ボタンをクリックします。


『Save changes』ボタンをクリックします。

ポリシーが変更されていることが確認出来ます。

Jobの作成と実行

AWS Glueの画面で、左ペインの『Jobs』を選択します。

『Add job』を選択します。

・Job名を入力します。
・IAMロールは第1回で作成したもの(先程ポリシーを編集したもの)を指定します。
・スクリプト格納用のS3パスとして、第1回で作成した『script』フォルダを指定します。
・一時ディレクトリとして、第1回で作成した『temp』フォルダを指定します。
・『Next』ボタンをクリックします。

『input』のラジオボタンを選択して、『Next』ボタンをクリックします。


『Create tables in your data target』を選択します。

・『Data store』に『Amazon S3』を選択します。
・『Format』は『CSV』を選択します。
・『Target path』に第1回で作成した『output』フォルダを選択します。
・『Next』ボタンをクリックします。

SourceからTargetへ、どのような変換や加工を行うかを設定します。
右上の『Add column(Target列の追加)』『Clear(Target列の全削除)』『Reset(Target列の初期化)』ボタンや、Target各列の右に表示されている『×(Target列の削除)』『↓(順序を下へ移動)』『↑(順序を上へ移動)』で設定出来ます。


今回は『class』列を削除して、残りの列の順序を変更します。
『Next』ボタンをクリックします。

『Save job and edit script』ボタンをクリックします。


JobのPySparkスクリプトが表示されます。今回は何も編集せず、右上の『×』ボタンをクリックします。

PySparkスクリプトは下記の通りです。

作成したJobのチェックボックスをチェックします。

『Action』から『Run job』を選択します。

『Run job』ボタンをクリックします。


Jobが開始されます。Jobのチェックボックスをチェックします。

Jobの『Run status』が『Running』になっていることが確認出来ます。

暫く待つとJobの『Run status』が『Succeeded』になって終了します。

結果の確認

S3バケットの『output』フォルダに結果ファイルが出力されていることが確認出来ます。


ファイルの内容は下記の通りです。Jobで設定した通りに出力されていることが確認出来ます。

Jobのスクリプトも『script』フォルダに出力されます。

おわりに

以上、AWS Glueを動かすこと自体を目的に、なるべく簡単な構成と処理内容で試してみました。次はデータベースやデータウェアハウスへのデータロード、PySparkスクリプトを編集してのより高度な処理などに挑戦したいと思います。

最後までご覧頂きありがとうございました。

参考リンク

[1] AWS Glue
https://aws.amazon.com/jp/glue/
[2] AWS Glue とは
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/what-is-glue.html
[3] AWS Black Belt – AWS Glue
https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-aws-glue
[4] GitHub – aws-samples/aws-glue-samples: AWS Glue code samples
https://github.com/aws-samples/aws-glue-samples
[5] AWS Glueの概要について
https://recipe.kc-cloud.jp/archives/10260
[6] 正式リリースになったAWS Glueを使ってみる ~準備編~
https://recipe.kc-cloud.jp/archives/10184