【AWS】AWS Glue ~ 基本編 / ジョブ ~

■ はじめに

https://dk521123.hatenablog.com/entry/2019/10/01/221926

の続き。
今回は、ジョブ(Job)について、焦点を当てる

■ ジョブ(Job)

* 1つのタスク(処理)を記述

■ ジョブタイプ

AWS Glue の ジョブは、以下の3種類。
【1】Spark
【2】Python shell
【3】Spark Streaming !! New !!

【1】Spark

 ⇒ AWS Glue の ETL 作業を実行するビジネスロジック
      大規模処理向き

【2】Python shell

 ⇒ Python スクリプトをシェルとして実行

使い分け(違いについて)

* ジョブタイプ「Spark」の場合、
  Python以外の言語で書かれた拡張機能(pandas など)はサポート外
 ⇒ Glue 2.0 以降では、サポートされている
 ⇒ Glue 2.0, 3.0 については、以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2020/08/19/130118
https://dk521123.hatenablog.com/entry/2021/09/18/232556

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 -

ジョブタイプ「Spark」の場合
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-python-libraries.html

より抜粋
~~~~~~~~
pandas などの C ライブラリは現在のところサポート外です。
他の言語で書かれた拡張機能も同様です。
~~~~~~~~
 ⇒ Glue 2.0 では、サポートされている

ジョブタイプ「Python shell」の場合
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/add-job-python.html#python-shell-supported-library

より抜粋 

(補足:この記事を書いた時点でなかったライブラリ(例えば「PyGreSQL」)もあったので
以下は参考程度で、直接、AWSサイトで確認した方がいい)
~~~~~~~~
Python シェルジョブを実行する環境は、次のライブラリをサポートしています。

Boto3
collections
CSV
gzip
multiprocessing
NumPy
pandas (python setuptools 設定である setup.py を使用してインストールする必要があります)
pickle
PyGreSQL
re
SciPy
sklearn
sklearn.feature_extraction
sklearn.preprocessing
xml.etree.ElementTree
zipfile
~~~~~~~~

※追記
以下の関連記事で取り上げている dateutil.relativedelta は、
2021/05/25時点では使用できた。

https://dk521123.hatenablog.com/entry/2019/10/14/121909

import datetime
import dateutil.relativedelta

now = datetime.datetime.now()
print(now)

one_month_ago = now + dateutil.relativedelta.relativedelta(months=1)
print(one_month_ago)

【3】Spark Streaming

いつの間にか新しいタイプのJobがでていた。。。

https://aws.amazon.com/jp/blogs/news/new-serverless-streaming-etl-with-aws-glue/

■ Boto3 API

* Boto3 API については、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2019/10/14/000000

公式サイト

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-api-jobs-job.html
データ構造
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html

■ 関連記事

AWS Glue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/01/221926
AWS Glue ~ 基本編 /トリガ ~
https://dk521123.hatenablog.com/entry/2019/11/29/221207
AWS Glue ~ 基本編 / クローラ ~
https://dk521123.hatenablog.com/entry/2019/12/01/003455
AWS Glue ~ Workflows / Boto3・AWS CLI
https://dk521123.hatenablog.com/entry/2019/10/14/000000
AWS Glue ~ Workflows / パラメータ渡し ~
https://dk521123.hatenablog.com/entry/2019/10/15/221931
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
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
Glue から DataCatalogテーブル に対して Spark SQLを実行する
https://dk521123.hatenablog.com/entry/2021/05/11/220731