【トラブル】【AWS】AWS Glue のトラブル ~ job編 [1] ~

■ はじめに

AWS Glue のトラブルについて、少しづつだが記録しておく

なお、boto3がらみは、以下の関連記事を参照のこと。

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

目次

【0】Glue トラブルシュート Tips
 1)エラー「Command failed with code 1」について
【1】エラー「ImportError: cannot import name timezone」が発生
【2】エラー「Max concurrent runs exceeded」が発生
【3】エラー「Availability Zone xxx does not correspond to subnet」が発生

その他Glueに関するトラブル

※ その他のGlue Jobに関するトラブルは、以下の関連記事を参照。

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

※ Glue Job以外のトラブルは、以下の関連記事を参照。

AWS Glue のトラブル ~ crawler編 ~
https://dk521123.hatenablog.com/entry/2020/05/07/144132

【0】Glue トラブルシュート Tips

1)エラー「Command failed with code 1」について

Glue Job でエラー「Command failed with code 1」が表示された場合、
下記の公式サイトにある通り、『システムエラー(原因は、Glue Jobコードじゃない)』になる。
 ⇒ 該当箇所の Job の Error Log を参照し、詳しい原因を探っていく。

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/monitor-profile-debug-oom-abnormalities.html

より抜粋
~~~~~~~~~~~~~~~~~
Command Failed with Exit Code 1。 
このエラー文字列は、システムエラーのためにジョブが失敗したことを意味します
—この場合はドライバーのメモリ不足です。
~~~~~~~~~~~~~~~~~

【1】エラー「ImportError: cannot import name timezone」が発生

 あるAWS環境で動いていたWorkflowを
別環境で移行したら、PySpark で記載されたPython ソースから
以下の「エラー内容」が表示された。

エラー内容

ImportError: cannot import name timezone

エラー箇所

from datetime import datetime, timezone

原因

https://stackoverflow.com/questions/50615133/python-cannot-import-timezone-but-can-import-datetime

に記載
~~~
datetime.timezone was added in Python 3.2.
So it is normal to get an import error in e.g. Python 2.7
~~~
されている通り、datetime.timezone は、Python2では動かない。
で、動いている環境では、Glue v1.0 / Python v3で動かしていたが
移行先は、Glue v0.9 / Python v2 になっていため。

ちなみに、Glueのデフォルトのバージョンは、Glue v0.9で
以下のように Python2しかサポートされていない。

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

解決案

PySpark の バージョンを、
「Glue v1.0 / Python3.6」に変更する

【2】エラー「Max concurrent runs exceeded」が発生

Python shell から以下のエラーが発生した。

エラー内容

Max concurrent runs exceeded

【訳】最大同時実行数が超えました

解決案

ExecutionProperty (ジョブの実行プロパティ) の
MaxConcurrentRuns (ジョブの同時実行の最大許容数) を増やす

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-glue-job-executionproperty.html

参考文献

https://forums.aws.amazon.com/thread.jspa?threadID=284427
https://dev.classmethod.jp/cloud/aws/aws-glue-job-concurrency/
https://github.com/awsdocs/aws-glue-developer-guide/blob/master/doc_source/aws-glue-api-jobs-job.md#aws-glue-api-jobs-job-ExecutionProperty
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html?highlight=string

補足

* エラー「ConcurrentRunsExceededException」については、
 以下の関連記事を参照のこと

Glue Job を並列で動かそうとしたら ConcurrentRunsExceededExceptionが発生
https://dk521123.hatenablog.com/entry/2022/12/02/163021

【3】エラー「Availability Zone xxx does not correspond to subnet」が発生

Jobからエラー「Availability Zone xxx does not correspond to subnet」が発生

エラー内容

JobName: xxx and JobRunId:jr_xxx failed to execute with exception
 Availability Zone xxx does not correspond to subnet

解決案

Default VPCをつけたら改善(正確にいうと、【4】のエラーに移行)
ひょっとしたら、VPC Endpoint周りの追加・修正も効いたかも、、、

※
ただし、原因調査の一時しのぎで、セキュリティ的によろしくないと思うので
ネットワーク周りに強い人に相談して、自分のシステム要件にあった
最終解決策を見出してください

関連記事

AWS Glue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/01/221926
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編 - [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
Amazon S3 ~ アクセス制御編 ~
https://dk521123.hatenablog.com/entry/2020/09/29/165636
IAM ~ IAM Policy 編 ~
https://dk521123.hatenablog.com/entry/2020/09/30/133123
AWS Glue Job で DB timeout が発生する
https://dk521123.hatenablog.com/entry/2021/08/30/104237
エラー「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