Amazon Redshift Spectrum を使用した外部データのクエリ - Amazon Redshift

Amazon Redshift Spectrum を使用した外部データのクエリ

Amazon Redshift Spectrum を使用すると、効率的にクエリを実行し、Amazon Redshift テーブルにデータをロードすることなく、Amazon S3 のファイルから構造化および半構造化されたデータを取得できます。Redshift Spectrum クエリでは超並列処理を採用しており、大きなデータセットに対する処理が非常に高速で実行されます。処理の多くは Redshift Spectrum レイヤーで生じ、データの大部分が Amazon S3 に保持されます。複数のクラスターが Amazon S3 で同じデータセットを同時にクエリできます。クラスターごとにデータをコピーする必要はありません。

Amazon Redshift Spectrum の概要

Amazon Redshift Spectrum は、クラスターに依存しない専用の Amazon Redshift サーバー上にあります。Amazon Redshift は、述語フィルタリングや集計など、大量の演算を行う多くのタスクを Redshift Spectrum レイヤーにプッシュします。したがって、Redshift Spectrum クエリが使用するクラスタの処理容量は他のクエリよりもはるかに少なくなります。Redshift Spectrum はさらに、インテリジェントに拡張します。クエリの需要に基づいて、Redshift Spectrum は潜在的に数千のインスタンスを使用して超並列処理を活用できます。

Redshift Spectrum テーブルは、ファイルの構造を定義して外部データカタログ内のテーブルとして登録することで作成します。外部データカタログは、AWS Glue、Amazon Athena を持つデータカタログ、もしくはユーザー所有の Apache Hive メタストアを指定することができます。外部テーブルは、データ定義言語 (DDL) コマンドを使用して、または外部データカタログに接続するその他の任意のツールを使用して Amazon Redshift から作成および管理できます。外部データカタログへの変更は、ただちにすべての Amazon Redshift クラスターで利用できます。

オプションで、外部テーブルを 1 つ以上の列でパーティション化できます。外部テーブルの一部としてパーティションを定義すると、パフォーマンスが向上します。パフォーマンスが向上するのは、Amazon Redshift クエリオプティマイザがクエリのデータを含まないパーティションを削除するためです。

Redshift Spectrum テーブルを定義すると、他の Amazon Redshift テーブルと同じようにクエリを実行してテーブル結合できるようになります。Redshift Spectrum は、外部テーブルに対する更新オペレーションをサポートしていません。Redshift Spectrum テーブルを複数の Amazon Redshift クラスターに追加して、同じ AWS リージョン内の任意のクラスターから Amazon S3 の同じデータにクエリを実行できます。Amazon S3 データファイルを更新すると、データはすぐにあらゆる Amazon Redshift クラスターからクエリに利用可能になります。

アクセスする AWS Glue データカタログは、セキュリティを強化するために暗号化されている可能性があります。AWS Glue カタログが暗号化されている場合、AWS Glueカタログにアクセスするには AWS Glue の AWS Key Management Service (AWS KMS) キーが必要です。AWS Glue カタログの暗号化は、一部の AWS リージョンでは使用できません。サポートされている AWS リージョンのリストについては、AWS Glueデベロッパーガイドの「AWS Glue の暗号化と安全なアクセス」を参照してください。AWS Glue でのデータカタログ暗号化の詳細については、AWS Glueデベロッパーガイドの「AWS Glue データカタログの暗号化」を参照してください。

注記

PG_TABLE_DEFSTV_TBL_PERM、PG_CLASS、または information_schema など、標準の Amazon Redshift テーブルに使用したものと同じリソースを使用して Redshift Spectrum テーブルの詳細を表示することはできません。ビジネスインテリジェンスまたは分析ツールが Redshift Spectrum 外部テーブルを認識しない場合は、SVV_EXTERNAL_TABLESおよび SVV_EXTERNAL_COLUMNS にクエリを実行するようにアプリケーションを設定します。

Amazon Redshift Spectrum リージョン

そのリージョン固有のドキュメントで特に明記されていない限り、Amazon Redshift が提供されている AWS リージョン リージョンであれば、Redshift Spectrum を使用することができます。商用リージョンでの AWS リージョン の可用性については、「Amazon Web Services 全般のリファレンス」の「Redshift API」の「サービスエンドポイント」を参照してください。

Amazon Redshift Spectrum の考慮事項

Amazon Redshift Spectrum を使用する際は、次の点に留意してください。

  • Amazon Redshift クラスターと Amazon S3 バケットは、同じ AWS リージョンに存在する必要があります。

  • Redshift Spectrum は、プロビジョニングされたクラスターで拡張された VPC ルーティングをサポートしていません。Amazon S3 データにアクセスするには、追加の設定ステップを実行する必要がある場合があります。詳細については、「Amazon Redshift 管理ガイド」の「Redshift Spectrum and enhanced VPC routing」(Redshift Spectrum と拡張された VPC のルーティング) を参照してください。

  • Redshift Spectrum は Amazon S3 のアクセスポイントのエイリアスをサポートしています。詳細については、Amazon Simple Storage Service ユーザーガイドアクセスポイントにバケットスタイルのエイリアスを使用するを参照してください。ただし、Redshift Spectrum では、Amazon S3 アクセスポイントのエイリアスを持つ VPC をサポートしていません。詳細については、「Amazon Redshift 管理ガイド」の「Redshift Spectrum and enhanced VPC routing」(Redshift Spectrum と拡張された VPC のルーティング) を参照してください。

  • 外部テーブルに対してオペレーションの更新または削除を実行することはできません。指定されたスキーマで新しい外部テーブルを作成するには、CREATE EXTERNAL TABLE を使用できます。CREATE EXTERNAL TABLE の詳細については、「CREATE EXTERNAL TABLE」を参照してください。SELECT クエリの結果を外部カタログの既存の外部テーブルに挿入するには、INSERT (外部テーブル) を使用できます。INSERT (外部テーブル) の詳細については、「INSERT (外部テーブル)」を参照してください。

  • AWS Lake Formationに対し有効になっている AWS Glue Data Catalog を使用する場合を除き、外部テーブルのユーザー権限を制御することはできません。代わりに、外部スキーマに対してアクセス権限の付与および取り消しを実行できます。AWS Lake Formation の使用方法の詳細については、「AWS Lake Formation で Redshift Spectrum を使用する」を参照してください。

  • Redshift Spectrum クエリを実行するには、データベースユーザーがデータベースに一時テーブルを作成するアクセス権限を持っている必要があります。次の例では、データベース spectrumdb の一時アクセス権限を spectrumusers ユーザーグループに付与しています。

    grant temp on database spectrumdb to group spectrumusers;

    詳細については、「GRANT」を参照してください。

  • Athena データカタログまたは AWS Glue データカタログをメタデータストアとして使用する場合は、「Amazon Redshift 管理ガイド」の「クォータと制限」を参照してください。

  • Redshift Spectrum は、Kerberos を使用する Amazon EMR をサポートしていません。