以前、AWS Glueを試しに使ってみたのですが、その感想です。
AWS GlueはApache Sparkでできていて、その時初めてSparkを触って面白かったので、 そのうちGlueを本格的に使うようになったら、追々使い方をまとめようかと思っていました。
しかし、データ出力先をGoogle BigQueryにしたかったという事情もあり、 結局、AWS Glueではなく、Google Dataprocを使うことになったので、AWS Glueを試したみた感想だけまとめることにしました。
AWS Glueとは?
AWS Glueは、ジャンル的にはETLツールに入ります。
しかし機能はかなり限定的で、AWS Glueの目的は、簡単に言ってしまうと下記になります。
- 「S3のデータファイルから、AWS Redshift Spectrum と AWS Athenaのテーブルを作成するツール」
Redshift Spectrum・Athenaは共に、S3のファイルを直接見に行くことができるのがウリなのですが、 そのためには、事前にテーブル定義(データカタログ)を作成しておく必要があります。
しかも、テーブル定義は単にスキーマだけではなく、データ範囲も含むので、 日々追加されていくログデータなどの場合、毎日追加されたデータの分だけ、テーブル定義を更新していく必要があります。
そのテーブル定義作成・更新作業を、自動化してくれるツールがAWS Glueです。
技術的背景
Redshift Spectrum・Athenaは共に、Hadoopの技術をベースに作られています。そして、 Glueでデータカタログと呼んでいるテーブル定義は、Apache Hive のTableのことで、 Glueは、S3のファイルから、Hive Tableを作るツールと言えます。
また、Glueはクローリングによるテーブル定義作成・更新に加えて、Apache Sparkを使って、プログラミングにより、ユーザーがより細かくデータ加工することもできます。
AWS EMRとの違い
Hadoop・Hive・Sparkというと、AWS EMRが思い浮かびます。
実質、AWS GlueはAWS EMRで作られていて、テーブル定義はAWS EMRのHive Tableでも作ることができます。
Glueは、ジョブが走っている時だけ課金される従量課金モデルというところと、 ジョブの処理の重さに応じてクラスターがオートスケールするというところが、EMRと大きく異なります。
つまり、Glueは、よりテーブル定義作成作業向けにカスタマイズされたEMRとも言えます。
使用感
Guleには、敷居を低めようと、色々GUIで操作できるようになっているので、ETLツール感覚で使えるのかと期待したのですが、全然ダメでした。
アマゾンのGlueのマニュアルだけでは解決せず、EMR・Hive・Sparkの知識が必要になる場面が多々あり、 最初にそっちを勉強してから触った方が早かったです。
それらの前提知識無しの状態から、単にETLツールとして使おうとすると、学習コストはかなり高くなるかなぁと感じました。
逆に、それらの前提知識がある人なら、すんなり理解できるかと思います。
感想
正直、既存EMRユーザーが、従量課金・オートスケールのEMRとして、EMRの代替として検討するサービスなのかなと思いました。
Sparkは好きで使っていますが、使いやすいか?万人におすすめできるか?と言われるとう~んと言った感じで…。また、Hadoop・Sparkは数年前からダウントレンドで、今後流行っていく感じがしないんですよねぇ…。
そして、それらの技術をベースとして、生々しいまでにそれらが仕様としてユーザーに露出してくる、AWS Glue・Redshift Spectrum・Athenaも、流行っていく感じがしないんですよねぇ…。
というわけで残念ながら「非AWS EMRユーザーならナシ」という結論になりました。