[新機能] AWS Glue Studio によるビジュアルジョブオーサリングと高度なモニタリングを試してみました

2020.09.24

データアナリティクス事業本部の石川です。本日リリースされたAWS Glue Studioは、オーサリング、実行、モニタリング、AWS Glue によるETL(Extract Transform Load)開発が容易になる新しいビジュアルインタフェースです。本日から東京リージョンでも利用可能になりましたので早速試してみます。

AWS Glue Studioとは

AWS Glue Studioは、AWS GlueでETLジョブを簡単に作成、実行、監視できる新しいグラフィカルインターフェイスです。データ変換ワークフローを視覚的に構成し、AWS GlueのApache SparkベースのサーバーレスETLエンジンでシームレスに実行できます。

ビジュアルインターフェイスによるETL開発

ボックス(ノード)と矢印(流れ)のシンプルなインターフェイスを用いて、データの移動や変換、AWS Glueで実行するジョブを作成できるようになりました。AWS Glue Studioにより、Apache Sparkプログラミングに不慣れなユーザーでもグラフィカルなGUIを用いてETLを開発できるようになります。コードを書かなくても、すべてのユーザーがAWS GlueのサーバーレスApache SparkベースのETLプラットフォームでビッグデータ処理を利用できます。

ジョブ実行ダッシュボードによるモニタリング

AWS Glue Studioのジョブ実行ダッシュボードを使用してすべてのETLジョブ実行を監視し、ジョブが意図したとおりに動作していることを確認できます。AWS Glue Studioジョブモニタリングダッシュボードを使用して、ETLの実行とリソースの使用状況のグローバルなビューを取得できます。

様々な形式のデータやデータソースをサポートしたETLツール

AWS Glue Studioは、表形式のデータだけでなく、スプレッドシートのようなレンダリングが難しい半構造化データも考慮したデータプリパレーション(データ前処理)インターフェイスを提供しています。半構造化データの例には、アプリケーションログ、モバイルイベント、IoT(Internet of Things)、イベントストリーム、ソーシャルフィードなどがあります。

AWS Glue Studioは、以下を容易にするビジュアルインターフェースを提供します。

  • Amazon S3、Amazon Kinesis、またはJDBCソースからデータを取得(Pull)
  • データの結合、サンプリング、変換を構成
  • 変換されたデータのターゲットの場所を指定
  • AWS Glue Studioで作成されたジョブを実行、監視、管理

AWS Glue Studioの機能

ビジュアルジョブエディター

AWS Glue Studioでジョブを作成および編集するときに、次のアクションを実行できます。

  • 実装するジョブにノードを追加
    • 複数のデータソース、複数のデータターゲット、追加の変換
  • 既存のノードの親ノードを変更
  • 次の変換を追加
    • データソースを結合
    • フィールドの選択・削除・リネーム・型変更
    • フィールドをS3バケット(spigot)のJSONファイルに書き込み
    • データを除外する
    • カスタムコードの使用

ジョブパフォーマンスダッシュボード

AWS Glue Studioは、ETLジョブの包括的な実行ダッシュボードを提供します。ダッシュボードには、特定の時間枠からのジョブ実行に関する情報が表示されます。ダッシュボードに表示される情報は次のとおりです。

  • ジョブの概要の概要–合計ジョブ、現在の実行、完了した実行、および失敗したジョブを示す高レベルの概要
  • ステータスの概要–ワーカータイプやジョブタイプなどのジョブプロパティに基づいた高レベルのジョブメトリックを提供
  • ジョブ実行のタイムライン–現在選択されている時間枠の成功、失敗、および合計実行の棒グラフの概要
  • ジョブ実行の内訳–選択した時間枠からのジョブ実行の詳細リスト

データセットのパーティショニングのサポート

AWS Glue Studioは、分割されたデータセットを効率的に処理できます。S3からの不要なデータのリスト表示と読み取りを回避するために、SQL式またはユーザー定義関数を使用して、パーティション化されたデータをロード、フィルタリング、変換、保存できます。

AWS Glue Studioを試してみる

それでは早速、AWS Glue Studioを試してみます。

なお、AWS Glue Studioする前に、AWSGlueConsoleFullAccess マネージドポリシーをIAMユーザーもしくはIAMロールにアタッチしてください。

Glueのコンソールを開くと、左のメニューにAWS Glue Studio Newというリンクが追加されています。このリンクをクリックすると、AWS Glue Studioの画面に遷移します。

AWS Glue Studioのインタフェースは、

  • Create and managed jobs:ETLジョブ作成
  • Monitor job runs:ジョブモニタリング用のダッシュボード

デフォルトでは、左のメニューが隠れています。Create and managed jobsと左のメニューのjobは同じ画面です。また、Monitor job runsと左のメニューのMonitoringは同じ画面です。つまり、今回新規で追加になったのは上記の2種類となります。

Create and managed jobs

この画面は、ジョブの作成と既存のジョブの一覧が表示されます。今回は、メニューも従ってジョブを作成したいので、Create JobのSource and target added to the graphを選択して、[Create]ボタンを押します。

Visual

以下が新しいAWS Glue Studioの ETL ジョブの作成画面になります。各処理を表すボックスのことを「ノード」と呼びます。このノードを追加したり、ノードごとのプロパティを設定してジョブを作成します。

  • ブルー背景の「+」を押すとノードが追加
  • レッド背景の「ー」を押すとノードが削除

ここではそれぞれのノードに以下の設定しました。

  • Data source - S3 Bucket
    • Database: default
    • Tables: order
  • Transform - ApplyMapping
    • (変更なし)
  • Data source - S3 Bucket
    • Format: JSON
    • Compression Type: None
    • S3 Target Location: s3://bucket_name/target/order/

Script

上記の設定に基づいて生成されたコードを参照できます。

Job details

ジョブを実行するIAMロールやGlue Version、ワーカーの数などジョブの実行に必要なコンピュートリソースを指定します。設定項目は、従来のGlueジョブの内容と基本的に変わりません。下記の例では、Number of workersを2、Number of retriesを0に変更しています。

最後に画面上の[Save]ボタンを押して、ジョブの作成は完了です。

Monitor jobs runs

先程作成したジョブを実行して、ダッシュボードから稼働状況を確認します。画面上部の[Run]ボタンを押して、ジョブを直ちに実行します。

ジョブを実行した後、Run detailsを参照するとそのジョブの実行状態が確認できます。

AWS Glue Studioのトップ画面に戻り、Monitor jobs runsをクリックしてダッシュボードを表示すると、すべてのジョブの稼働状況を確認できます。

ジョブが正常終了すると実行したジョブはグリーンになります。ダッシュボードを全面表示するとスクロールせずにジョブの稼働状況を把握できます。

最後に

AWS Glue Studioは、GUIとプロパティ設定でJobを作成できることが確認できました。簡単なジョブであればAWS Glue Studioでジョブを作成を試み、全てできなかったとしても従来通りSparkのコードを修正できるので、複雑なジョブを組み合わせることでカバーできる範囲は広がるははずです。上記の検証では触れていませんが、残念ながら従来の自動生成されたジョブは、AWS Glue StudioのGUIで編集できませんでした。GUIでジョブを作成・修正したいのなら、最初からAWS Glue Studioで作成したほうが良いでしょう。

AWS Glue Studioのダッシュボードは、従来ジョブを選択しなければ稼働状況を確認できなかったのと比較して、既存のジョブも全て一元的に監視できるのでとても便利です。今後はジョブの稼働状況の把握にはAWS Glue Studioのダッシュボードで確認するのがスタンダードになりそうです。