Glue DataBrewでデータを
クリーニング、加工してみよう
2021/10/7
データアナリティクス事業本部
須藤 健志
2
自己紹介
須藤 健志(suto takeshi)
所属
データアナリティクス事業本部
『データ分析基盤や機械学習基盤のコンサル・構築を担当』
略歴
通信事業会社のNWエンジニア→メーカー系SIer
→クラスメソッドJoin(2020年4月)
好きなAWSサービス
AWS CDK、Glue DataBrew、SageMaker
3
アジェンダ
• はじめに
• Glue Databrewの概要
• Glue Databrewの機能と特徴
• Glue Databrewの使いどころ
• デモ
• まとめ
4
はじめに
データ分析・機械学習の前に行う
「データクレンジング」
5
はじめに
•こんなことありませんか?
• 誤記や表記ゆれがあり前処理がうまくいかない
• 重複しているデータがある、欠損値がある
• エラーが発生してデータを取り込めない
6
はじめに
データのクレンジングが必要
欠損の修正
重複データの削除
正規化・標準化
無関係なデータの削除や
マスキング
7
はじめに
しかしデータクレンジングには
時間とコストがかかる
• ワークフローの構築とその自動化
• システム間で大容量データの移動
8
Glue DataBrewとは
コードを記述せずに
データのクリーンアップおよび正規化ができる
ビジュアルデータ準備ツール
AWSマネージドサービス
(サーバレスで使える)
9
Glue DataBrewとは
主な機能
250種類以上の変換処理
• プレビューで変換前と変換後を比べながら処理を作成
10
Glue DataBrewとは
主な機能
ワークフローの自動化
• ジョブの実行をスケジューリングできる
11
Glue DataBrewとは
主な機能
データリネージの視覚化
• データが通過した様々なデータソースと変換ステップをビジュアルで確認
12
Glue DataBrewとは
主な機能
データプロファイリング
• データの相関関係や統計をわかりやすく表示
13
Glue DataBrewとは
サポートしているファイルタイプ
【入力ファイル】
• CSV
• Parquet
• Json
• Excel
【区切り文字】
• カンマ(,)
• コロン(:)
• セミコロン(:)
• パイプ(|)
• タブ(¥t)
• キャレット(^)
• バックスラッシュ(\)
• スペース
【圧縮タイプ】
• なし
• Snappy
• Gzip
• LZ4
• Bzip2
• Deflate
• Brotli
【出力ファイル】
• CSV
• Parquet
• Glue Parquet
• AVRO
• ORC
• XML
• Json
• Tableau Hyper
14
Glue DataBrewとは
指定できるデータソース、出力先も充実してきた
【データソース】
• Amazon S3
• Amazon Redshift
• Glueデータカタログ
(S3、Redshift、RDS、Lake Formation)
• Snowflake
• その他データベース
(JDBC接続経由)
• サードパーティデータ
(AWS Data Exchange
またはAmazon AppFlow経由)
【出力先】
• Amazon S3
• Amazon Redshift
• Glueデータカタログ
(S3、Redshift、RDS 、Lake Formation )
• Snowflake
• その他データベース
(JDBC接続経由)
15
Glue DataBrewの料金
インタラクティブセッション(1.0$/30分)
• プロジェクト画面を開くとセッション開始
• 未操作の時間が続けば自動でサスペンド
• はじめてDataBrewを使う場合、最初の40セッションは無償
ジョブ実行(0.48$/ノード/時間)
• ジョブ実行に使用されたノード数に基づいて1時間ごとに課金
• デフォルトでは各ジョブに5ノード割り当て
• 1ノード4vCPUs、16GBメモリ
16
Glue DataBrewの使いどころ
主なユースケース
• データをアドホックに探索して
BIレポートやデータマートの作成に向けた策定
• 定常的かつ簡単なデータクリーニング処理を自動化したい
• データ準備処理のためのパイプラインを
コーディングレスで構築したい
17
Glue DataBrewの使いどころ
(技術的に可能だが)DataBrewには向かないケース
• 複雑なETL処理
→実現に膨大なステップ数となるため
• 機械学習における特徴量計算
• データ分析における複数テーブルからの統計処理
→エンジニアからすればコード開発した方がラク
• データ前処理工程を1つのサーバ内で一貫して素早く処理したい
• Glue Databrewジョブの実行完了には時間がかかる
• 同じ処理をコードで実行した方が早い
18
ここから実際の画面でデモをやっていきます
内容:DataBrewプロジェクト作成〜レシピ作成〜ジョブ実行をやってみよう
使用するデータ:Titanicの機械学習用データ
(以下URLからダウンロードして、S3バケットに保存した状態からスタートします)
https://www.kaggle.com/c/titanic/data
19
まとめ
データクリーニング、正規化に使えるGlue DataBrew
• サーバレスかつコードを書かずにデータ処理のジョブを作成で
きるので構築に手間がかからない
• プレビューで変換前/後を確認しながら様々な処理ができる
• データをアドホックに探索しながらワークフローを作るのに有
用だが、複雑なETL処理の実装には向かない
Glue DataBrewでデータをクリーニング、加工してみよう

Glue DataBrewでデータをクリーニング、加工してみよう

Editor's Notes

  • #2 皆さん こんにちは。 本セッションでは、「AWS Glue DataBrewを使ってデータをクリーニング、加工する」といったデータのクレンジングを行う方法についてご紹介します。 この動画では、Glue DataBrewでデータ処理を行うジョブを作成するための一連の操作方法を理解でき、どのような場面でDataBrewを活用すると良いのかを知ることができます。
  • #3 自己紹介させていただきます。私、須藤健志と申します。 データアナリティクス事業本部に所属しており、主にデータ分析基盤や機械学習基盤のコンサルティングと構築を担当しています。 クラスメソッドには2020年4月にJoinいたしました。 よろしくお願いします。
  • #4 今日のアジェンダです。 はじめにDataBrewの概要や機能についてお話しし、次に実際に私が使ってみたときの所感をもとに、DataBrewの使いどころをお話しします。 そのあと、実際のAWSコンソール画面を映しながらDataBrewの操作方法を解説し、最後にまとめとなります。
  • #5 データ分析や機械学習を始める際に、業務システムにデータを直接読み込ませるのではなく、前段のフェーズで「データのクレンジング」という工程が必要になってくることはご存知でしょうか? データクレンジングとは元のデータベースにあるデータから欠損している値、表記揺れがある値を探索し、その修正や正規化を行う「データ前処理のフェーズ」で行う工程のことです。
  • #6 データ分析や機械学習のデータ前処理のなかでデータクレンジングが必要になってくる背景として、 データベースからロードした生のデータをそのまま分析基盤や機械学習にかけようとしても、 ・誤記や表記ゆれが含まれているため、データ変換時に歪みが発生するであったり ・重複している部分や欠損している部分があり、データの信頼性が低い状態であったり こういった理由によるシステムエラーでうまくデータを読み取れず、運用を継続できない といった課題が生じます。
  • #7 そのために、欠損の修正、重複データの削除、データの正規化や標準化、無関係なデータの削除やマスキングといったデータのクレンジング作業が必要となります。
  • #8 しかし、「データ分析や機械学習の業務にかかる時間は、データ前処理の工程が8割である」という言葉があるように、データクレンジングには多くの時間とコストがかかります。 その要因として、変換処理を行うスクリプト開発だけでなく、それを自動化するためのワークフロー構築や、システム間で大容量のデータを集約する仕組みと環境も必要になってくるからです。
  • #9 このような悩みを解決してくれるサービスとしてAWS Glue DataBrewというサービスがあります。 Glue DataBrewとは、SQLやPythonのようなコードを記述せずにデータのクリーンアップおよび正規化ができるデータ準備ツールです。 特徴として、AWSマネージドサービスのためサーバレスで開発環境とジョブ実行環境を用意することができ、データの読み取り先もS3、Redshift、Glue、RDSなどの連携対応しており、データの集約の仕組みも簡単に実装できます。
  • #10 主な機能についてざっくりご紹介していきます。 こちらのスライドに移しているのはDataBrewの開発画面であるプロジェクト画面になります。 上に並んでいるアイコンから処理内容をクリックし、右側に現れる編集ウィンドウから項目を選択していくだけで、コードを一切書かずにデータ変換処理を生成することができます。 作成した処理は1つのステップとして蓄積していき、ステップの塊を処理する一連のフローがレシピという単位で保存されます。 また、プレビュー機能で変換前と変換後を比べながら開発でき、データ探索や処理内容の試行錯誤を行いながら開発を進められるという強みがあります。
  • #11 こうしてレシピに保存された処理内容を実行するジョブを生成できるのですが、作成したジョブはスケジュール機能により任意の日時と頻度で実行するように設定することができます。 実行頻度はcron式で記述することもできますので、ある程度柔軟性のある実行スケジュールを組むことができると思います。
  • #12 また、DataBrewにはデータリネージの視覚化をしてくれる機能があります。 こちらの画面のように、データが通過した様々なデータソースと変換ステップのフローをビジュアルで表示されるため、プロセスの流れについての確認がしやすくなっています。
  • #13 また読み込んだデータソースをこちらの画面のようにプロファイリングする機能もあり、データの相関関係や統計をわかりやすく表示することができます。
  • #14 次にサービスとしてサポートしているファイルタイプについてです。 2021年9月30日時点の情報となりますが、S3バケットから読み込めるファイルタイプとしてこちらに表示しているものをサポートしています。 データソースとしてよく使われるcsvやParqutなどがありますし、 他のAWSサービスにはあまり見られない特徴として、EXCELの拡張子ファイルの読み取りや、Tableau Hyper形式での出力をサポートしているところが面白いところですね。
  • #15 また、データセットに指定できるデータソースや、ジョブの出力先に関しても日々のアップデートとともに充実してきています。 最近はJDBCドライバで接続できるデータベースが対応したことと、DataDogやSalesfourceなどのSaaSサービスと連携できるAmazon AppFlowに対応したことは大きなアップデートではないでしょうか。
  • #16 料金についてですが、 まず1つ目に、プロジェクト画面を開くと開発環境へのセッションが開始され、この時点から30分ごとに1ドルずつ課金が発生します。 しかし、これから初めてDataBrewを使う場合であるならば、セッション接続回数において最初の40回分は無償となり料金は発生しません。 2つ目は、ジョブ実行に使用されたノード数に基づいて、1時間ごとに課金が発生します。 デフォルトでは1つのジョブに対して5ノードを割り当てます。 無駄に課金を発生させないためのポイントですが、無闇にプロジェクト画面を開きに行ってセッション開始による課金を発生させないように注意してください。 また作業が終わった後はプロジェクト画面をそのまま放置せずウィンドウを閉じることを心がけると良いと思います。
  • #17 次に、私が実際にDataBrewを使ってきて感じたことをもとに、こういうシチュエーションのときにDataBrewを利用するのが良いのではないか、ということについてお話しします。 まず、データをアドホックに探索してBIレポートやデータマートの作成方針を検討しながら開発を進める場合です。 つまり、現状で各々の業務システムで使われているデータベースの中身をまだ詳しく確認しておらず、これからどのような前処理が必要になるか把握できていない状況において、いろいろ試行錯誤しながら開発を進めたいのであれば、DataBrewの利用は有効になると思います。 2つ目と3つ目にある、定常的かつ簡単なデータクリーニング処理を自動化したい場合、またそのためのパイプラインをコーディングレスで構築したい場合です。 例えば、単純なデータ変換処理を自動化するワークフローを短期間で構築したい、そんな時にDataBrewであれば開発とジョブ実行のための環境を用意する必要がなく、スクリプト等のコード開発もする必要がないため、作業コストがかからず構築できると思います。
  • #18 次に、サービス機能として実現可能でありますがが、DataBrewの利用には向かないユースケースについてお話しします。 1つ目は、複雑なETL処理には向かないと感じました。 例えば、機械学習における特徴量計算や、データ分析における複数テーブルからデータを読み込んで計算する統計処理などを実現しようとすると膨大なステップ数となります。 それを全てマウスクリックなどのGUI操作で作成していくのはかなりの負担であり、コードを書けるエンジニアからすれば素直にスクリプト作成やLambdaやStepFunctionsでコードを書いた方がラクだと思いました。 2つ目は、データクレンジングもデータ加工のETL処理も1つのサーバ内で一貫して素早く処理したい場合です。 私が使ってきた体感ではありますが、Glue DataBrewジョブの実行時間は、決して早いとは感じませんでしたし、 データの規模は処理内容による部分はありますが、同じ処理をLambdaやStepfunctions内のコードでデータの処理や計算をさせた方が処理が早いこともあります。 それはDataBrewのステップ数が膨大であればあるほど実行時間の差は開いていくように思いました。 ですので、DataBrewのジョブは比較的単純なデータクレンジング処理を営業時間外の夜間に実行するジョブとしてスケジュールして運用していく使い方が良いのではないかと感じました。 アーキテクチャの面においても、データ前処理で細かい工程ごとに利用するサービスを増やしたくないという思いがあるのなら、DataBrewを必ず採用する必要性はないのなかと思います。
  • #19 さて、ここからは実際のDatBrewの画面をお見せしながらプロジェクト作成〜レシピ作成〜ジョブ実行までの手順を解説していきます。 今回のデモで使用するデータはKaggleにあるタイタニックの機械学習用データを使わせていただきます。 前準備として、このデータをS3バケットに保存した状態からデモはスタートします。 それではAWSコンソール画面に移動いたします。
  • #20 では、まとめに入ります。 DataBrewを利用する際に押さえておくポイントとして、 サーバレスかつコードを書かずにデータ処理のジョブを作成できるので構築に手間がかからないというメリットがあること。 プレビューで変換前/後を確認しながら様々な処理ができるという強みがあること。 また、DataBrewの使い所として、データをアドホックに探索しながらワークフローを作るのに有用だが、複雑なETL処理の実装には向かない、ということが挙げられます。 また、今回のデモで紹介した処理内容の他に、DataBrewで様々な変換処理の検証を行なっているブログ記事がありますので、そちらの方を動画の概要欄に貼っておきますので是非ご参照ください。
  • #21 以上で私の発表は終了となります。 最後まで見てくださった皆さん、ご視聴ありがとうございました。 クラスメソッドには他にも様々な動画コンテンツがあります。 よかったらチャンネル登録や高評価していただけたら非常に嬉しいです。 それでは、さようなら。