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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for morimorikochan morimorikochan
September 03, 2025

バッチ処理で悩むバックエンドエンジニアに捧げる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を使って安定したバッチ処理を実装しよう