■ はじめに
Glue について、徐々に調べて書き込んでおく
目次
【1】AWS Glue 【2】Lambda との違い 【3】使用上の注意 1)サポートバージョンに注意 2)ジョブタイプ「Spark」でサポート外のモジュールがある 3)IAM権限設定が必要 【4】全体像 1)全体の流れ 2)構成要素 【5】Glue のセキュリティ設定
【1】AWS Glue
* Glue (グルー) : 糊、接着剤 ⇒ AWSの各種サービス間を繋ぐ役割 * AWS上に保管しているデータ(Ex. S3)を 抽出-Extract、変換-Transform、ロード-Load (ETL)するサービス
1)チュートリアルについて
サービスメニュー内にガイド付きチュートリアルがある ⇒ ありそうでなかった!詳細は、以下のサイトを参照。
https://dev.classmethod.jp/cloud/aws/aws-glue-tutorial/
【2】Lambda との違い
1)時間制限がない 2)使用メモリが大きい 3)サポートするPythonバージョンやライブラリ 4)コスト
【3】使用上の注意
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 | ※ |
3.0 | Spark 3.1.1 | - | Python 3.7 | ※ |
4.0 | Spark 3.3.0 | - | Python 3.10 | ※ |
※ Glue2.0~ について
* 以下の関連記事を参照のこと
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 ~ Glue Version 4.0 ~
https://dk521123.hatenablog.com/entry/2023/03/15/000000
Glue バージョンに関わるトラブル
以下の関連記事 の 「【1】別環境に移行したらPySparkジョブで 「ImportError: cannot import name timezone」が発生」 を参照のこと
https://dk521123.hatenablog.com/entry/2019/10/25/232155
2)ジョブタイプ「Spark」でサポート外のモジュールがある
* ジョブタイプ「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/
【4】全体像
https://d1.awsstatic.com/webinars/jp/pdf/services/20190806_AWS-BlackBelt_Glue.pdf
の P15 「AWS Glueの全体像」がわかりやすい
1)全体の流れ
[1] クローラがデータソースのメタデータをクロールする [2] クローラがメタデータをデータカタログに登録・更新する [3] トリガーでジョブの実行タイミングを定義する [4] データカタログのメタデータを元に、データソースからデータを抽出する [5] ジョブを実行し、データターゲットに出力する
2)構成要素
[a] ジョブ(Job)
* 1つのタスク(処理)を記述 * 詳細は、以下の関連記事を参照。
https://dk521123.hatenablog.com/entry/2019/11/17/231505
[b] トリガ
* ジョブを開始する引き金(トリガー)を定義できる機能 * 詳細は、以下の関連記事を参照。
https://dk521123.hatenablog.com/entry/2019/11/29/221207
[c] クローラ(Clawer)
* S3においてあるファイルの内容やフォルダ構成から 自動的にテーブルスキーマを解析し、データカタログに保存 * 詳細は、以下の関連記事を参照。
https://dk521123.hatenablog.com/entry/2019/12/01/003455
【5】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 ~ DynamicFrame ~
https://dk521123.hatenablog.com/entry/2021/12/14/221043
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 v3.0版 ~
https://dk521123.hatenablog.com/entry/2022/01/31/165650
AWS Glue ~ ジョブパラメータ ~
https://dk521123.hatenablog.com/entry/2022/09/28/105558
AWS Glue ~ パフォーマンスチューニング ~
https://dk521123.hatenablog.com/entry/2022/12/03/000119
Glue ~ パフォーマンスチューニング2 ~
https://dk521123.hatenablog.com/entry/2023/07/07/004530
AWS Glue ~ Python shell job ~
https://dk521123.hatenablog.com/entry/2022/09/08/120231
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 ~ Glue Version 4.0 ~
https://dk521123.hatenablog.com/entry/2023/03/15/000000
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 ~ EventBridgeでGlue Workflowを起動する ~
https://dk521123.hatenablog.com/entry/2022/04/22/194903
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
AWS Glue ~ Scalaでの実装 ~
https://dk521123.hatenablog.com/entry/2023/03/17/000000
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
Docker compose ~ LocalStack/Glue4.0 ~
https://dk521123.hatenablog.com/entry/2023/03/25/021432
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
boto3 AWS Glue API のトラブル ~ Connection編 ~
https://dk521123.hatenablog.com/entry/2021/10/31/000000
AWS Glue Job で DB timeout が発生する
https://dk521123.hatenablog.com/entry/2021/08/30/104237
AWS Glue Job で ConnectionTimeoutError が発生する
https://dk521123.hatenablog.com/entry/2022/03/28/162514
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
エラー「no identity-based policy allows the iam:PassRole action」が発生
https://dk521123.hatenablog.com/entry/2022/05/17/140400
Glue Jobを起動した際にエラー「LANCH ERROR | java.net.URISyntaxException」が発生
https://dk521123.hatenablog.com/entry/2022/11/18/163207
Glue Job を並列で動かそうとしたら ConcurrentRunsExceededExceptionが発生
https://dk521123.hatenablog.com/entry/2022/12/02/163021
その他
Pulumi ~ AWS Glue のデプロイ ~
https://dk521123.hatenablog.com/entry/2022/03/02/122037
Terraform ~ AWS Glue ~
https://dk521123.hatenablog.com/entry/2023/04/08/220411
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