AWSのETLのSaaSであるGlueのハンズオン
AWSでのETLサービスであるGlueのハンズオンの備忘メモである。
プロジェクトでAzureのADFを使用したことがあるので、Glueも類似性があった。
Azure ADFの実行メモ
ADFも同様にVisualでETL処理を実行することができる。
下記のようなデータレイクをS3、データウェアハウスをS3、ETLをAWS Glueのアーキテクチャとする。

AWS glue上で「script editor」でpythonスクリプトを作成していく
IAMロールの作成
glueにアタッチするIAMロールができたら、IAMポリシーをつけていく

ETLの処理として下記のスクリプトを記載
OutputlogとErrorlogsのリンクからCloud Watchのサービスでログを確認可能

Visual ETLについてみていこう
スクリプトで記載する場合
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from awsgluedq.transforms import EvaluateDataQuality
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
# Default ruleset used by all target nodes with data quality enabled
DEFAULT_DATA_QUALITY_RULESET = """
Rules = [
ColumnCount > 0
]
"""
# Script generated for node Amazon S3
AmazonS3_node1753154917873 = glueContext.create_dynamic_frame.from_options(format_options={"quoteChar": "\"", "withHeader": True, "separator": ",", "optimizePerformance": False}, connection_type="s3", format="csv", connection_options={"paths": ["s3://datalake-dev-202507/titanic/train.csv"], "recurse": True}, transformation_ctx="AmazonS3_node1753154917873")
# Script generated for node Change Schema
ChangeSchema_node1753155125975 = ApplyMapping.apply(frame=AmazonS3_node1753154917873, mappings=[("passengerid", "string", "passengerid", "string"), ("survived", "string", "survived", "string"), ("pclass", "string", "pclass", "string"), ("sex", "string", "sex", "string"), ("age", "string", "age", "string")], transformation_ctx="ChangeSchema_node1753155125975")
# Script generated for node Amazon S3
EvaluateDataQuality().process_rows(frame=ChangeSchema_node1753155125975, ruleset=DEFAULT_DATA_QUALITY_RULESET, publishing_options={"dataQualityEvaluationContext": "EvaluateDataQuality_node1753154720500", "enableDataQualityResultsPublishing": True}, additional_options={"dataQualityResultsPublishing.strategy": "BEST_EFFORT", "observations.scope": "ALL"})
AmazonS3_node1753156121481 = glueContext.write_dynamic_frame.from_options(frame=ChangeSchema_node1753155125975, connection_type="s3", format="csv", connection_options={"path": "s3://datawarehouse-dev-202507", "partitionKeys": []}, transformation_ctx="AmazonS3_node1753156121481")
job.commit()
成功が表示され、CloudWatchのoutlogでも確認できます

GUIやpythonスクリプトにて、ETL処理をSaaSとして実施することができる。
AzureのADFでもバッチ処理ができるの、類似のクラウドサービスとして理解しておくとイメージしやすい
「python shell」のタイプでPysparkの実装を行なってもawsglueモジュールが使用できない。

AWS glueにてVisual ETLにてsourceデータに対してjoinすることも可能である。
イメージとしては下記の通り。
QuickSigntによる可視化
DWHとして使用しているS3のバケットをデータソースにして、QucikSigntの可視化をしていく。
マニフェストファイルのサンプルは下記の通り
{
"fileLocations": [
{
"URIs": [
"https://datawarehouse-dev-202507.s3.ap-northeast-1.amazonaws.com/titani-etl.csv"
]
}
],
"globalUploadSettings": {
"format": "CSV",
"delimiter": ",",
"textqualifier": "'",
"containsHeader": "true"
}
}
データソースの取り込みが完了すると下記のような形式で、可視化ができる。
公開したものは下記の形で可視化が可能である。



































