[祝] Amazon Redshift Spectrumが東京リージョンで利用可能になりました

2017.10.22

はじめに

今年の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 クラスタに適用します。

20171021-amazon-redshift-spectrum-tokyo-iam-role

外部スキーマの定義

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のテーブルとして参照することもできます。

20171021-amazon-redshift-spectrum-tokyo-query-athena

最後に

一般にビックデータ関連のクラウドサービスは、北米リージョンのみサービス提供されることがほとんどですが、AWSは東京リージョンにもいち早くRedshift Spectrumをサービス開始しています。イントラネット環境から専用回線(Direct Connect)を利用して高速かつセキュアにビックデータを取り扱いたいニーズでは東京リージョンは欠かせません。今日から低レイテンシでこのサービスを利用できることを楽しみにしています。

執筆時点の Redshift Spectrum の利用費は、リージョン問わずスキャンされたデータ1TBあたり$5となります。北米リージョンと同じ価格という点も嬉しいかぎりです。利用費の詳細はPrice Per Redshift Spectrum Query を御覧ください。

関連記事

【速報】Amazon Redshift:S3のデータを直接検索出来る新機能『Redshift Spectrum』が発表されました! #awssummit

S3データを直接クエリ出来る新機能『Amazon Redshift Spectrum』を実際に試してみました