[祝] Amazon Redshift Spectrumが東京リージョンで利用可能になりました
はじめに
今年の4月にAWS Summit 2017 in San Franciscoで発表された Amazon S3にある大量のデータに対して、Amazon Redshiftから直接クエリを投げる事が出来るサービスが、2017/10/20からAWS東京リージョンで利用可能になりましたので紹介させて頂きます。
東京リージョンで動作確認
早速、東京リージョンでRedshift Spectrumを試しました。私の環境では一時的にエラーが発生していましたが、2017/10/21 19時以降から利用できるようになりました。
サンプルデータを東京リージョンにコピー
クエリーを実行するたびにリージョン間転送費用が発生しないようにサンプルデータを東京リージョンのS3バケットにコピーします。
$ aws s3 sync s3://awssampledbuswest2/tickit/spectrum/sales/ s3://<東京リージョンのバケット>/tickit/spectrum/sales/ copy: s3://awssampledbuswest2/tickit/spectrum/sales/sales_ts.000 to s3://<東京リージョンのバケット>/tickit/spectrum/sales/sales_ts.000
クラスタへロールの付与
マネージドポリシー AmazonS3FullAccess と AmazonAthenaFullAccess を付与したIAMロールを作成して、Redshift クラスタに適用します。
外部スキーマの定義
spectrumという外部スキーマと、Amazon Athena Data Catalogにspectrumdbデータベースを作成します。
$ psql -h cmdb.xxxxxxxxxxxx.ap-northeast-1.redshift.amazonaws.com -U root -d cmdb -p 5439 Password for user root: psql (9.6.5, server 8.0.2) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: on) Type "help" for help. cmdb=# create external schema spectrum cmdb-# from data catalog cmdb-# database 'spectrumdb' cmdb-# iam_role 'arn:aws:iam::123456789012:role/AmazonRedshiftSpectrumRole' cmdb-# create external database if not exists; INFO: External database "spectrumdb" created CREATE SCHEMA
外部テーブルの定義
cmdb=# create external table spectrum.sales( cmdb(# salesid integer, cmdb(# listid integer, cmdb(# sellerid integer, cmdb(# buyerid integer, cmdb(# eventid integer, cmdb(# dateid smallint, cmdb(# qtysold smallint, cmdb(# pricepaid decimal(8,2), cmdb(# commission decimal(8,2), cmdb(# saletime timestamp) cmdb-# row format delimited cmdb-# fields terminated by '\t' cmdb-# stored as textfile cmdb-# location 's3://<東京リージョンのバケット>/tickit/spectrum/sales/' cmdb-# table properties ('numRows'='172000'); CREATE EXTERNAL TABLE
外部スキーマやテーブルの一覧
新たに外部スキーマや外部スキーマのテーブル一覧を取得できるようになりました。
外部スキーマ一覧
cmdb=# select * from svv_external_schemas; esoid | eskind | schemaname | esowner | databasename | esoptions --------+--------+------------+---------+--------------+-------------------------------------------------------------------------- 100156 | 1 | spectrum | 100 | spectrumdb | {"IAM_ROLE":"arn:aws:iam::123456789012:role/AmazonRedshiftSpectrumRole"} (1 row)
外部スキーマのテーブル一覧
cmdb=# select * from svv_tables where table_type = 'EXTERNAL TABLE'; table_catalog | table_schema | table_name | table_type | remarks ---------------+--------------+------------+----------------+--------- cmdb | spectrum | sales | EXTERNAL TABLE | (1 row)
クエリの実行
定義したテーブルデータが参照できることが確認できました。
cmdb=# select * from spectrum.sales limit 10; salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime ---------+--------+----------+---------+---------+--------+---------+-----------+------------+--------------------- 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76.00 | 11.40 | 2008-06-06 05:00:16 6 | 10 | 24858 | 24888 | 3375 | 2023 | 2 | 394.00 | 59.10 | 2008-07-16 11:59:24 7 | 10 | 24858 | 7952 | 3375 | 2003 | 4 | 788.00 | 118.20 | 2008-06-26 00:56:06 8 | 10 | 24858 | 19715 | 3375 | 2017 | 1 | 197.00 | 29.55 | 2008-07-10 02:12:36 9 | 10 | 24858 | 29891 | 3375 | 2029 | 3 | 591.00 | 88.65 | 2008-07-22 02:23:17 28 | 29 | 34152 | 10978 | 7622 | 2133 | 2 | 58.00 | 8.70 | 2008-11-03 03:35:47 29 | 29 | 34152 | 9876 | 7622 | 2131 | 1 | 29.00 | 4.35 | 2008-11-01 03:46:01 45 | 52 | 27110 | 11635 | 2300 | 2129 | 3 | 378.00 | 56.70 | 2008-10-30 10:33:47 62 | 72 | 11258 | 10729 | 3398 | 2089 | 2 | 328.00 | 49.20 | 2008-09-20 05:18:34 63 | 72 | 11258 | 2671 | 3398 | 2080 | 1 | 164.00 | 24.60 | 2008-09-11 05:28:14 (10 rows)
Athena コンソールから Redshift Spectrum のテーブルを参照する
Redshift Spectrum の外部テーブルは、以下のようにAmazon Athenaのテーブルとして参照することもできます。
最後に
一般にビックデータ関連のクラウドサービスは、北米リージョンのみサービス提供されることがほとんどですが、AWSは東京リージョンにもいち早くRedshift Spectrumをサービス開始しています。イントラネット環境から専用回線(Direct Connect)を利用して高速かつセキュアにビックデータを取り扱いたいニーズでは東京リージョンは欠かせません。今日から低レイテンシでこのサービスを利用できることを楽しみにしています。
執筆時点の Redshift Spectrum の利用費は、リージョン問わずスキャンされたデータ1TBあたり$5となります。北米リージョンと同じ価格という点も嬉しいかぎりです。利用費の詳細はPrice Per Redshift Spectrum Query を御覧ください。
関連記事
【速報】Amazon Redshift:S3のデータを直接検索出来る新機能『Redshift Spectrum』が発表されました! #awssummit