Amazon Redshiftは非常に魅力的なクラウド・
まずその前に、
より多くのデータがJSONフォーマットで生成・
Uploading JSON to Amazon Redshift
今回、
これがどのように実行できるかを理解するためには、
# users_test.json
{
"userid": 1,
"name": "George Washington"
"address": [ "Westmoreland", "VA" ],
"age": 282
}
{
"userid": 2,
"name": "John Adams",
"address": [ "Braintree", "MA" ],
"age": 279
}
このJSONデータをAmazon Redshiftにアップロードするために、
- ※)
- もしまだRedshiftクラスタを立ち上げていない場合、
または費用をかけたくない場合は、 こちらからFlyDataが提供する無料のテスト用Redshift環境にアクセスすることもできます。
Redshiftテーブルの作成
Redshiftクラスタへのアクセスができるようになったら、
create table users_test (
userid INTEGER not null,
name VARCHAR(100),
city VARCHAR(100),
state CHAR(2),
age INTEGER,
primary key(userid)
);
ここでは、
JSONPathsファイルの作成
これでRedshiftにデータをロードするためのテーブルが用意できました。
次に JSONPathsファイルを作成します。これはRedshiftのカラムとJSONデータをマッピングするものです。
今回は、
# users_test_jsonpaths.json
{
"jsonpaths":
[
"$['userid']",
"$['name']",
"$['address'][0]",
"$['address'][1]",
"$['age']"
]
}
このJSONファイルには最上位に"jsonpaths"というキーが含まれています。このキーの値に対応するのが、
“$”
今回は、\d users_
をRedshift上で実行しています)。
Column | Type | Modifiers --------+------------------------+----------- userid | integer | not null name | character varying(100) | city | character varying(100) | state | character(2) | age | integer | Indexes: "users_test_pkey" PRIMARY KEY, btree (userid)
対応するJSONPathsは次のようになります。
# users_test_jsonpaths.json
{
"jsonpaths":
[
"$['userid']",
"$['name']",
"$['address'][0]",
"$['address'][1]",
"$['age']"
]
}
では、
COPYコマンドの実行
これでCOPYコマンドを実行する準備ができました。
copy users_test from 's3://<your_s3_bucket>/users_test.json' credentials 'aws_access_key_id=<your_access_key>; aws_secret_access_key=<your_secret_access_key>' JSON as 's3://<your_s3_bucket>/users_test_jsonpaths.json';
これでRedshiftに対して、
# (running `select * from users_test; `) userid | name | city | state | age --------+-------------------+--------------+-------+----- 1 | George Washington | Westmoreland | VA | 282 2 | John Adams | Braintree | MA | 279
まとめ
ここまで見てきたように、
データがRedshiftにロードされると、
個人的な感想としては、
また、
この記事が参考になれば幸いです。ではまた!
筆者が所属するFlyDataでは、