【AWS】AWS Glue ~ 入門編 ~

■ はじめに

Glue について、徐々に調べて書き込んでおく

AWS Glue

* Glue (グルー) : 糊、接着剤
 ⇒ AWSの各種サービス間を繋ぐ役割

* AWS上に保管しているデータ(Ex. S3)を
  抽出-Extract、変換-Transform、ロード-Load (ETL)するサービス

補足:チュートリアルについて

サービスメニュー内にガイド付きチュートリアルがある
 ⇒ ありそうでなかった!詳細は、以下のサイトを参照。

https://dev.classmethod.jp/cloud/aws/aws-glue-tutorial/

■ Lambda との違い

【1】時間制限がない
【2】使用メモリが大きい
【3】サポートするPythonバージョンやライブラリ
【4】コスト

■ 使用上の注意

【1】サポートバージョンに注意

* Glue バージョンにより、Spark/Pythonのサポートバージョンが異なる
* どちらも最新バージョンではないので注意

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/add-job.html より抜粋

Glue バージョン Spark Python2 Python3 備考
0.9 Spark 2.2.1 Python 2.7 - -
1.0 Spark 2.4.3 Python 2.7 Python 3.6 -
2.0 Spark 2.4.3 - Python 3.7

※ Glue2.0 について

* 以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2020/08/19/130118

Glue バージョンに関わるトラブル

以下の関連記事 の
「【1】別環境に移行したらPySparkジョブで「ImportError: cannot import name timezone」が発生」
を参照のこと

https://dk521123.hatenablog.com/entry/2019/10/25/232155

【2】ジョブタイプ「Spark」の場合、Python以外の言語で書かれた拡張機能(pandas など)はサポート外(ジョブタイプ「Python shell」だと使用可能)

詳細は、以下の関連記事を参照。

https://dk521123.hatenablog.com/entry/2019/11/17/231505

【3】IAM権限設定が必要

例えば、「AWSGlueServiceRole」や「AmazonS3FullAccess」を付与する。

以下のサイトを参照

https://dev.classmethod.jp/cloud/aws/getting-started-aws-glue-iam-environment-setting/

■ 全体像

https://d1.awsstatic.com/webinars/jp/pdf/services/20190806_AWS-BlackBelt_Glue.pdf

の P15 「AWS Glueの全体像」がわかりやすい

全体の流れ

【1】クローラがデータソースのメタデータをクロールする
【2】クローラがメタデータをデータカタログに登録・更新する
【3】トリガーでジョブの実行タイミングを定義する
【4】データカタログのメタデータを元に、データソースからデータを抽出する
【5】ジョブを実行し、データターゲットに出力する

構成要素

ジョブ(Job)

* 1つのタスク(処理)を記述
* 詳細は、以下の関連記事を参照。

https://dk521123.hatenablog.com/entry/2019/11/17/231505

トリガ

* ジョブを開始する引き金(トリガー)を定義できる機能
* 詳細は、以下の関連記事を参照。

https://dk521123.hatenablog.com/entry/2019/11/29/221207

クローラ(Clawer)

* S3においてあるファイルの内容やフォルダ構成から
  自動的にテーブルスキーマを解析し、データカタログに保存
* 詳細は、以下の関連記事を参照。

https://dk521123.hatenablog.com/entry/2019/12/01/003455

■ Glue のセキュリティ設定

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/encryption-at-rest.html

[設定](Settings)から、以下の項目を暗号化できる
~~~~
[1] Data Catalog の暗号化(Metadata encryption)
[2] 接続パスワードの暗号化(Encrypt connection passwords)
~~~~

※ 暗号化する際には、KMS(Key Management Service)が必要

AWS Key Management Service (KMS)
https://dk521123.hatenablog.com/entry/2020/02/27/232553

参考文献

https://style.potepan.com/articles/12944.html
https://dev.classmethod.jp/cloud/aws/aws-glue-is-full-managed-and-serverless-service/
https://qiita.com/erikaadno/items/94a26f1ea1a829545812
https://dev.classmethod.jp/cloud/aws/relay_looking_back_aws_glue/
https://blog.engineer.adways.net/entry/advent_calendar_2017/05
https://www.qoosky.io/techs/0964aa9fdc
https://dev.classmethod.jp/cloud/aws/aws-glue-tutorial/

公式サイト

https://aws.amazon.com/jp/glue/faqs/
トラブルシューティング
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/troubleshooting-glue.html

関連記事

AWS Glue

AWS Glue ~ 基本編 / ジョブ ~
https://dk521123.hatenablog.com/entry/2019/11/17/231505
AWS Glue ~ 基本編 /トリガ ~
https://dk521123.hatenablog.com/entry/2019/11/29/221207
AWS Glue ~ 基本編 / クローラ ~
https://dk521123.hatenablog.com/entry/2019/12/01/003455
AWS Glue ~ クローリング結果の確認画面 ~
https://dk521123.hatenablog.com/entry/2021/05/28/142153
AWS Glue ~ ローカル環境を作成する ~
https://dk521123.hatenablog.com/entry/2019/11/10/205535
AWS Glue ~ Glue Version 2.0 ~
https://dk521123.hatenablog.com/entry/2020/08/19/130118
AWS Glue ~ Glue Version 3.0 ~
https://dk521123.hatenablog.com/entry/2021/09/18/232556
AWS Glue ~ AWS Glue Studio ~
https://dk521123.hatenablog.com/entry/2020/09/24/145415
AWS Glue ~ トリガ / EventBridgeイベント ~
https://dk521123.hatenablog.com/entry/2021/07/16/161359
AWS Glue ~ ログ ~
https://dk521123.hatenablog.com/entry/2019/10/09/000000
Workflows / 入門編
https://dk521123.hatenablog.com/entry/2019/10/10/223018
AWS Glue ~ Boto3 / 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/14/000000
AWS Glue ~ Boto3 / 基本編 ~
https://dk521123.hatenablog.com/entry/2021/04/17/001930
AWS Glue ~ Boto3 / クローラ編 ~
https://dk521123.hatenablog.com/entry/2021/04/16/135558
AWS Glue ~ Boto3 / セキュリティ設定編 ~
https://dk521123.hatenablog.com/entry/2020/04/08/171208
AWS Glue ~ Boto3 / Glue connection編 ~
https://dk521123.hatenablog.com/entry/2020/01/29/224525
AWS Glue ~ Boto3 / パーティション操作編 ~
https://dk521123.hatenablog.com/entry/2021/06/09/113458
AWS Glue ~ Boto3 / DB・テーブル操作編 ~
https://dk521123.hatenablog.com/entry/2021/06/11/164015
AWS Glue ~ AWS CLI
https://dk521123.hatenablog.com/entry/2021/08/02/104306
AWS Glue ~ Workflows / パラメータ渡し ~
https://dk521123.hatenablog.com/entry/2019/10/15/221931
Glue から DataCatalogテーブル に対して Spark SQLを実行する
https://dk521123.hatenablog.com/entry/2021/05/11/220731
Glue から Redshift/PostgreSQL に接続する ~ Python shell編 ~
https://dk521123.hatenablog.com/entry/2020/08/26/193237
Glue から Redshift/PostgreSQL に接続する ~ PySpark編 ~
https://dk521123.hatenablog.com/entry/2020/09/23/111741
AWS Glue ~ Excelを扱うには / Python shell 版 ~
https://dk521123.hatenablog.com/entry/2019/11/08/000000
AWS Glue ~ Excelを扱うには / PySpark (Glue2.0) 版 ~
https://dk521123.hatenablog.com/entry/2020/10/09/144520
Glue Job から パーティションを更新することを考える
https://dk521123.hatenablog.com/entry/2021/05/15/130604
AWS Glue のトラブル ~ job編 - [1] ~
https://dk521123.hatenablog.com/entry/2019/10/25/232155
AWS Glue のトラブル ~ job編 - [2] ~
https://dk521123.hatenablog.com/entry/2020/10/12/152659
AWS Glue のトラブル ~ job編 - [3] ~
https://dk521123.hatenablog.com/entry/2021/02/16/145848
AWS Glue のトラブル ~ job編 - [4] ~
https://dk521123.hatenablog.com/entry/2021/05/10/143328
AWS Glue のトラブル ~ crawler編 ~
https://dk521123.hatenablog.com/entry/2020/05/07/144132
boto3 AWS Glue API のトラブル ~ trigger全般 編 ~
https://dk521123.hatenablog.com/entry/2020/10/23/110821
boto3 AWS Glue API のトラブル ~ scheduled trigger編 ~
https://dk521123.hatenablog.com/entry/2020/01/16/205331
boto3 AWS Glue API のトラブル ~ job/crawler編 ~
https://dk521123.hatenablog.com/entry/2020/02/05/223307
AWS Glue Job で DB timeout が発生する
https://dk521123.hatenablog.com/entry/2021/08/30/104237
AWS Glue上で エラー「Dynamic partition strict mode requires ...」が発生する
https://dk521123.hatenablog.com/entry/2021/05/17/120443
AWS Glue上で saveAsTextFile() を使ったら エラー「DirectOutputCommitter not found」が発生する
https://dk521123.hatenablog.com/entry/2021/05/18/185420

その他

AWS Data Wrangler ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/04/28/174316
AWS Lake Formation ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/10/13/094041
Amazon EMR ~ AWS Glueとの連携 ~
https://dk521123.hatenablog.com/entry/2020/11/12/113312
AWS Key Management Service (KMS)
https://dk521123.hatenablog.com/entry/2020/02/27/232553
Pentaho ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/04/000000