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

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

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

Redshift Spectrum テーブルを定義すると、他の Amazon Redshift と同じようにクエリを実行して結合できるようになります。Amazon Redshift は外部テーブルでの更新オペレーションをサポートしていません。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 のリージョン

Redshift Spectrum は以下の AWS リージョンでのみ利用できます。

  • 米国東部 (バージニア北部) リージョン (us-east-1)

  • 米国東部 (オハイオ) リージョン (us-east-2)

  • 米国西部 (北カリフォルニア) リージョン (us-west-1)

  • 米国西部 (オレゴン) リージョン (us-west-2)

  • アジアパシフィック (ムンバイ) リージョン (ap-south-1)

  • アジアパシフィック (ソウル) リージョン (ap-northeast-2)

  • アジアパシフィック (シンガポール) リージョン (ap-southeast-1)

  • アジアパシフィック (シドニー) リージョン (ap-southeast-2)

  • アジアパシフィック (東京) リージョン (ap-northeast-1)

  • カナダ (中部) リージョン (ca-central-1)

  • 欧州 (フランクフルト) リージョン (eu-central-1)

  • 欧州 (アイルランド) リージョン (eu-west-1)

  • 欧州 (ロンドン) リージョン (eu-west-2)

  • 南米 (サンパウロ) リージョン (sa-east-1)

Amazon Redshift Spectrum に関する考慮事項

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

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

  • クラスターが拡張された VPC のルーティングを使用する場合は、追加のステップを行う必要がある場合があります。詳細については、「拡張された VPC のルーティングで Amazon Redshift Spectrum を使用する」を参照してください。

  • 外部テーブルは読み取り専用です。外部テーブルに対してオペレーションの挿入、更新、または削除を実行することはできません。

  • 外部テーブルのユーザーアクセス権限をコントロールすることはできません。代わりに、外部スキーマに対してアクセス権限の付与および取り消しを実行できます。

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

    grant temp on database spectrumdb to group spectrumusers;

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

  • Athena データカタログまたは AWS Glue データカタログの使用は、次のように制限されています。

    • アカウントあたりのデータベース数の上限: 10,000

    • データベースあたりのテーブル数の上限: 100,000。

    • テーブルあたりのパーティション数の上限: 1,000,000。

    • アカウントあたりのパーティション数の上限: 10,000,000

    これらの上限は、AWS サポートにリクエストして拡大することができます。

    これらの制限は Apache Hive メタストアに適用されません。

    詳細については、「Amazon Redshift Spectrum 用の外部スキーマの作成」を参照してください。

このページの内容: