[レポート] ワークショップ:Amazon Redshift と Amazon S3 を横断するシングルクエリーの構築方法 #ANT404 #reinvent

2019.12.16

DA事業本部の川崎です。

本記事はAWS re:Invent 2019のワークショップの参加レポートとなります。

概要

Amazon Redshift offers a common query interface against data stored in fast, local storage (Amazon Redshift) and data stored in high-capacity, inexpensive storage (Amazon S3). This workshop covers the basics of this tiered storage model and outlines design patterns that you can leverage to get the most from large volumes of data. Learn how to build out your own Amazon Redshift cluster with multiple data sets to illustrate the trade-offs between the storage systems. Learn how to distribute your data and design your DDL to deliver the best data warehouse for your business.

Amazon Redshiftは、高速のローカルストレージ(Amazon Redshift)に保存されたデータと、大容量の安価なストレージ(Amazon S3)に保存されたデータに対する共通のクエリインターフェイスを提供します。 このワークショップでは、この階層型ストレージモデルの基本について説明し、大量のデータを最大限に活用するために活用できる設計パターンの概要を説明します。 複数のデータセットを使用して独自のAmazon Redshiftクラスターを構築し、ストレージシステム間のトレードオフを説明する方法を学びます。 データを配布し、DDLを設計して、ビジネスに最適なデータウェアハウスを提供する方法を学びます。

スピーカー

  • Vuk Ercegovac - Principal Engineer, Amazon Web Services
  • Joe Harris - Redshift Database Engineer III, Amazon Web Services

アジェンダ

  • ワークショップのコンテンツ
    • ワークショップ終了後、以下のことができるようになります。
      • Amazon S3でログファイルとネストされたJSONデータをクエリします。
      • AWS Glueを使用して共有データカタログを作成します。
      • アンロードを使用して、カラムナフォーマットでデータをエクスポートします。
      • AWS Lake Formationを使用して安全なデータレイクを構築します。
      • 新しいAmazon Redshift Spatialを使用して、外部で空間クエリを実行します。

Amazon RedshiftおよびAmazon Redshift Spectrumのリキャップ(要約)

Amazon Redshiftアーキテクチャ

Amazon Redshift の新機能

  • 自動メンテナンス
    • バキュームとアナライズは、バックグラウンドで自動実行されます
  • クエリ優先度を持つ自動WLM
    • Amazon Redshiftは、リソース割り当てベースのクエリ優先度を自動的に調整します。
  • 同時実行スケーリング
    • ワークロードのスパイク発生時に、追加クラスターが数秒でオンラインになります
  • Parquetへのアンロード
    • 自動パーティションサポートを使用して、Parquet形式に直接アンロード

Amazon Redshift Spectrumは、クラスターサイズの問題を解決します

  • クラスターが小さすぎる?
    • データがクラスターに収まらない、またはクエリの実行に時間がかかりすぎる。
  • クラスターが大きすぎる?
    • ハードウェアが十分に活用されていない、またはクラスターのコストが高すぎる。

Amazon Redshift Spectrumクエリ処理

Amazon Redshift Spectrumの新機能

  • Amazon Redshift Spectrumリクエストアクセラレーター
    • メタデータと小さな結果出力をキャッシュして、クエリが高速化されました
  • ネストされたデータのサポート
    • 複雑なマルチ構造化データで外部テーブルを定義できるようになりました
    • PartiQLイニシアチブ@partiql.org
      • ネストされたデータに対するクエリのオープンソース仕様
  • Lake Formation
    • Amazon S3データレイクをすばやく作成して保護します

ラボモジュールの概要

  • ラボは、Amazon SageMakerでプロビジョニングされたJupyterノートブックサーバーで実行される
  • ノートブックサーバーは、テストアカウントの詳細とテストAmazon Redshiftクラスターへの接続で構成されています
  • 各ラボには、詳細な手順が記載された特定のノートブックファイルがあります
  • ラボノートは、後で参照できるようにGitHubで公開される

Amazon Redshift Spectrumはデータの取り込みを簡素化する

  • Amazon Redshiftにコピーする前、もしくは後に、クリーンおよび変換します

ラボ#1:Amazon Redshift監査ログを問い合わせる

  • ノートブック名:Lab1_Redshift_Audit_Logs.ipynb
  • Amazon Redshift監査ログは複雑な行フォーマットとなっています
  • 正規表現SerDeを使用して、ログフィールドから列を定義します
  • 外部テーブルが機能すること、クエリの合計が正しいことを確認します
  • AWS Glue データカタログ内のテーブルを確認します

ネストされたデータのサポート

  • Amazon S3上のネストされた、半構造化データを分析します
  • ネストされたデータを簡単にETLし、Amazon Redshiftテーブルに入れることができます
  • オープンなデータ形式のサポート:Parquet、ORC、JSON、Ion、AVRO
  • ドット表記を使用して、既存のSQLを拡張する

ラボ#2:AWS CloudTrailのネストされたJSON形式のログを問い合わせる

  • ノートブック名:Lab2_CloudTrail_Nested_Json.ipynb

データをParquet形式でAmazon S3にアンロードする

  • Amazon Redshiftは、自動パーティションが組み込まれたParquet形式でAmazon S3にデータをエクスポートできるようになりました
  • 変換することなく、データレイク全体でデータを簡単かつ迅速に共有できます
  • Parquetは、Amazon EMR、Athena、およびAmazon Redshiftでサポートされているオープンなデータ形式です

ラボ#3:Parquet形式でアンロードする

  • ノートブック名:Lab3_Unload_to_Parquet.ipynb

データレイク:新しい情報ハブ

  • 構造化および非構造化データをあらゆる規模で管理、検出、共有、分析できる集中管理された安全なリポジトリ

ラボ#4:Lake Formationのセットアップ

  • ノートブック名:Lab4_Setup_AWS_Lake_Formation.ipynb
  1. 新しいLake Formation管理者を作成
  2. AWS Glue Data Catalogデータベースが表示されていることを確認
  3. 以前に作成した外部テーブルにデータ権限を追加
  4. テストクエリを実行して、データパーミッションが期待どおりに機能することを確認

空間データ処理

  • 大規模な空間分析
    • 空間データを取り込み、保存し、分析します
  • ジオメトリ間の関係を並行して分析します
  • 空間データとビジネスデータをシームレスに関連付けて、新しい洞察を得ます

ラボ#5:Redshift空間データ処理

  • ノートブック名:Lab5_Redshift_Spatial_Processing.ipynb

まとめ

先日、キーノートで発表されたRedshiftの新機能を利用しながら、高速のローカルストレージ(Amazon Redshift)に保存されたデータと、大容量の安価なストレージ(Amazon S3)に保存されたデータの双方を組み合わせたクエリを実行する方法を学ぶことができました。

これらの知見を活かして、ますます使いやすくなった、Redshiftとデータレイクのさらなる活用を進めていきたいですね!