AWS Glue DataBrewとAWS Glue Studioの比較＆使い所の検討

##前段

AWS GlueのノンコーディングツールにはAWS Glue DataBrewとAWS Glue Studioの2種類がある。
この2つのサービスはいずれもデータ分析において80％の時間が費やされるとされるデータ準備を効率化するためのサービスであり、AWSではいずれか一方を二者択一で選択するものではなく併用して利用可能としている。
ここでは両者の特徴を比較して、どのような場合にどちらのツールを使うとスムーズにデータ加工を行うことができるか検討する。
なお、この検討結果は2021/6時点のものである。

*1.Blackbelt Online SminarでのAWSのQA回答
〜AWS Glue StudioのBlackBeltにて〜
>Q. 基本的なことなのかもしれませんが、以下のようなユースケースが一般的なのでしょうか？ ①Glue Studio でデータソースから初期のクレンジングやカスタマイズを行って、②①で作成したデータを Glue DataBrew で分析する。
A. はい、Glue Studio と DataBrew は併用可能ですので、初期処理を Glue Studio で実施し、後段で DataBrew を活用いただくことは可能です。

https://aws.amazon.com/jp/blogs/news/webinar-bb-awsglue-2021/

〜AWS Glue DataBrewのBlackbeltにて〜
>Q. Glue Studio との違いや、使い分けはどのようなものでしょうか
A. AWS Glue DataBrew は非エンジニアの方が組み込み変換機能を使って GUI で直感的に操作することが可能なデータ準備のためのサービスです。一方、AWS Glue Studio はコーディングを行うエンジニアの方が、より柔軟にデータ変換のパイプラインを組むことを容易にするためのサービス(機能)です。AWS Glue DataBrew で対応していない独自の変換処理が必要、カスタムコネクターが必要、といった場合は AWS Glue Studio の使用をお薦めします。これらは二者択一ではなく併用できますので、適材適所でお使いください。

https://aws.amazon.com/jp/blogs/news/webinar-bb-awsgluedatabrew-2021/


##比較
### 全般の比較
データ加工機能を除いた全般的な比較は以下の通り。

| 項目 | AWS Glue DataBrew | AWS Glue Studio |
|:-:|:-:|:-:|
| コンセプト  | データのクリーンアップ及び正規化を最大80％高速化するビジュアルデータ準備ツール  | ETLジョブの作成・実行・監視を容易にする視覚的なインターフェース  |
| 想定ユーザ  | データアナリスト・データサイエンティスト  | ETLデベロッパー  |
| コーディング可否 | 不可  | 可(Spark)  |
| インプットデータの場所  | 1.ローカルファイル<br> 2.s3上のファイル<br> 3.Glueデータカタログ<br> 4.AWS DataExchange  |  1.s3<br> 2.Kinesis<br> 3.JDBCソース |
| インプット対象データの形式  |  コンマ区切り値 (.csv)、JSON とネストされた JSON、Apache Parquet とネストされた Apache Parquet、Excel シートなど、一般的に使用されるファイル形式 | Data Catalog Table、JSON、CSV、Parquet  |
| アウトプット先  | s3  | s3,Glueデータカタログ  |
| アウトプット対象データの形式  | AWS Glue DataBrew は、コンマ区切り値 (.csv)、JSON、Apache Parquet、Apache Avro、Apache ORC、および XML <br>各種圧縮にも対応  | JSON、CSV、Avro、Parquet、Glue Parquet、ORC <br>各種圧縮にも対応 |
| 設定のエクスポート  | Yaml/JSONでレシピのエクスポートが可能  | データ変換内容をSparkで表示が可能  |
| データ変換時のプレビュー  | 可  | 不可(*2)  |
| データフォーマットの変更  | 可（プロジェクトの中ではなくジョブの設定）  | 可  |
| データリネージ（*3）  | 可  | 可  |

*2.具体的なデータの内容はプレビュー出来ないが、変換後の列のキー名やデータタイプを確認することは可能

*3.元のデータから何をどう変換したか、を後追いできるようにすること

##データ加工機能の比較
主なデータ変換についてDataBrew、Glue Studioそれぞれの対応状況は以下表の通り。
AWS Glue Studioに関してはコーディングによる作り込みで大体の機能は実装できるが、今回の整理ではあくまでノンコーディングでどこまでできるかを比較するものとしてコーディングしないといけない場合には「×」とする。
Glue Studio列のカッコ内は対応しているデータ変換ノード。

| #| 変換内容 | DataBrew | Glue Studio |
|:-:|:-:|:-:|:-:|
| 1  | 欠損値補完  | ◯  | ◯（ FillMissingValues）  |
| 2  | データセットの結合  | ◯  | ◯（Join）  |
| 3  | 列の作成  |  ◯ | ×  |
| 4  | データのフィルタリング  | ◯  | ◯（Filter）  |
| 5  | データの集計  |  ◯ | ×  |
| 6  | カテゴリ値の処理（*4）  | ◯  | ×  |
| 7  | 数値の扱い（*5）  | ◯  | ×  |
| 8  | データの型変換  | ◯（*6）  | ◯（ApplyMapping）  |
| 9  | 列名の変更  | ◯  | ◯（ApplyMapping or RenameField)  |

上記No1〜7について、DataBrewでの具体的な実装方法に関しては以下を参照。
https://aws.amazon.com/jp/blogs/big-data/7-most-common-data-preparation-transformations-in-aws-glue-databrew/

*4.One-Hot-Encodeやカテゴリマッピングなど。

*5.正規化などデータ分析を行うにあたってよりよく数字を扱うための加工。

*6.DataBrewでの型変換について、GUI上でテキストからdate/timeに変換する方法は見つかったが例えばStringからIntに変換する方法は見つからなかった。
ここの対応方法として、レシピをJSONでダウンロードしCHANGE_DATA_TYPEを追加、そのJSONファイルをインポートすることで対応可能。

https://docs.aws.amazon.com/ja_jp/databrew/latest/dg/recipe-actions.CHANGE_DATA_TYPE.html

##現時点（2021/6)で出来ないこと
現時点で出来ないこととして以下のようなものがある

・全角/半角の変換
・和暦/西暦の変換


##使いどころ
〜Amazon Glue DataBrewの利用が適している場面〜
・AWS自体の見識があまりないユーザがデータの中身に対して変換を行いたい場合
・データの傾向を確認をAWSマネジメントコンソール上で完結させたい場合

〜Amazon Glue Studioの利用が適している場面〜
・同様のデータ形式のファイルに対して繰り返し同じ処理を定期的に行いたい場合

〜DataBrew、Glue Studioの両方を併用する場面〜
・細かいデータ変換を行なった上で最終的にGlue Data Gatalogに反映させたい場合
　→ソースデータをDataBrewで加工、その結果ファイルをs3に格納、その結果ファイルをGlue Studioに取り込んで必要に応じて加工の上でOutputとしてGlue Data Catalogに反映させる
・変換処理の大部分はDataBrewで賄えるが一部の処理はコーディングによる作り込みが必要な場合
　→DataBrewで必要な処理を実装、その後にコーティングを求められる部分のみGlue Studioで実装

##比較してみての感想
DataBrewとGlue Studioでは単に想定ユーザ（DataBrew→データアナリスト・データサイエンティスト、Glue Studio→ETLデベロッパー）が違うという以上に「データ変換」の意味合いが違うように感じられる。
DataBrewはデータの中身を対象にした操作に強みを持っているのに対してGlue Studioはデータの列定義などデータファイルの形を整えるという点がメインの機能であるように思われる。
またGlue　Studioではコーディングとの組み合わせがシームレスにできることが強みで、自社のユースケースに合わせて細かい作り込みが必要なユースケースにおいてはGlue Studioを使うべき場面はありそう。
さらに今回あまり対象としていないがジョブ関連の機能についてはGlue Studio側が充実していそうに見えるので、データ分析の流れを確立して日々運用を回していきたい場合にはGlue Studioの活躍の場面が増えるのではないかとも思える。

また実際の現場において事業企画担当・データアナリスト・サイエンティスト・ETLデベロッパーなどのように担当者を役割分担できているケースは少なく、多くは「事業担当者」と「システム担当者」程度の区分けなのではないかと推測した場合、データ分析に関してはDataBrewを企画担当者及びシステム担当者の両方が利用しその内容でコミュニケーションを実施、そこから更に追加で細かい対応が必要な場合や、外部のサービス（Ex.QuickSightやApache SuperSetなどの外部のBIツールなど）と連携が必要な場合はシステム担当者がGlue Studioで実装するといった流れが良いのではないかと考える。


## 参考URL
###AWS Glue全般
https://aws.amazon.com/jp/glue/faqs/

### AWS Glue DataBrew関連
https://aws.amazon.com/jp/blogs/big-data/7-most-common-data-preparation-transformations-in-aws-glue-databrew/

https://aws.amazon.com/jp/blogs/news/webinar-bb-awsgluedatabrew-2021/

https://docs.aws.amazon.com/ja_jp/databrew/latest/dg/recipe-actions.column-structure.html


###AWS Glue Studio関連
https://docs.aws.amazon.com/ja_jp/glue/latest/ug/glue-ug.pdf

https://aws.amazon.com/jp/blogs/news/webinar-bb-awsglue-2021/

https://dev.classmethod.jp/articles/20200924-aws-glue-studio/