Upgrade to Pro — share decks privately, control downloads, hide ads and more …

バッチ処理で悩むバックエンドエンジニアに捧げるAWS Glue入門

バッチ処理で悩むバックエンドエンジニアに捧げるAWS Glue入門

"バッチ処理で悩むバックエンドエンジニアに捧げるAWS Glue入門"

DevelopersIO 2025 Osaka で発表した内容です

https://classmethod.connpass.com/event/361520/

Avatar for morimorikochan

morimorikochan

September 03, 2025
Tweet

More Decks by morimorikochan

Other Decks in Technology

Transcript

  1. 今⽇お伝えしたいこと 5 • AWS Glueはサーバーレスな分散処理エンジン • スクリプトが⾃動で分散処理されるので ◦ AWS Lambda‧ECSより楽に安定した⼤規模データの

    バッチ処理が実装できる • 複雑なJOINや⼩規模なデータの場合は不向き AWS Glueを使って安定したバッチ処理を実装しよう
  2. • ⼊⼒: S3に保存された10件のCSVファイル↓ ◦ 合計レコード件数: 約1215万件 ◦ 出展: Pure IDs

    (5-Core) - Amazon Reviews'23 • 加⼯: ◦ 2020年のものだけフィルタ ◦ ratingとtimestampを数値に変換 • 出⼒: DynamoDB デモ 17 Amazonの2020年のレビューデータをDynamoDBに投⼊
  3. # S3バケットから CSVファイルを読み取る dynamicFrame_source = glueContext.create_dynamic_frame.from_options( connection_type = "s3", connection_options

    = {"paths":["s3://glue-demo-20250830/"]}, format = "csv", format_options = { "withHeader": True, } ) デモ 18 ジョブのスクリプト(ETLでいう”E”)
  4. デモ 19 ジョブのスクリプト(ETLでいう”T”) # 型変換(ratingをdouble、timestampをlongに) dynamicFrame = ApplyMapping.apply( frame=dynamicFrame_source, mappings=[

    ("user_id", "string", "user_id", "string"), ("parent_asin", "string", "parent_asin", "string"), ("rating", "string", "rating", "double"), ("timestamp", "string", "timestamp", "long") ] )
  5. デモ 20 ジョブのスクリプト(ETLでいう”T”) # フィルタリング dynamicFrame = Filter.apply( frame=dynamicFrame, #

    timestampを2023年でフィルタ f=lambda x: x["timestamp"] > 1577804400000 and x["timestamp"] < 1609426800000 )
  6. • 😨Lambdaの15分制限にひっかかる ◦ 時間制限はない • 😱並列実⾏管理が⼤変 ◦ 結果は⾃動で集約される • 🤬DynamoDBのレートリミットでエラーが頻発

    ◦ RCU/WCUをみて⾃動制御が可能 データ量‧件数に依存しない安定したバッチ処理💪 AWS Glue 23 つらみが解決...!
  7. • Amazon Redshift • Amazon RDS • Amazon S3 •

    Google BigQuery • Kafka • Snowflake • JDBC • Amazon Aurora • Amazon DynamoDB • Salesforce • Microsoft Dynamics 365 CRM • OpenSearch Service • その他にもまだまだあります AWS Glue 25 データの読み込み先/書き込み先は豊富に⽤意 引用: Available connections - AWS Glue
  8. • 複雑なJOIN ◦ Sparkのシャッフルコストが⾼い ◦ RDSの⽅が効率的な場合も • ⼩規模なデータ(<1GB) ◦ Glueは起動時間:

    1-2分 ◦ コスト的にもAWS Lambdaの⽅が効率的 • 迅速なPDCAが求められる ◦ AWS Lambdaに⽐べると検証サイクルに時間がかかる AWS Glueが向いてない場⾯ 28 銀の弾丸ではない...!
  9. • AWS Glueはサーバーレスな分散処理エンジン • スクリプトが⾃動で分散処理されるので、 ◦ AWS Lambda‧ECSより楽に安定したバッチ処理が実 装できる •

    複雑なJOINや⼩規模なデータの場合は不向き まとめ 30 AWS Glueを使って安定したバッチ処理を実装しよう