Upload
shiro-miyazaki
View
810
Download
3
Embed Size (px)
DESCRIPTION
Amazon Redshiftって何?ビッグデータ解析に使えるらしいんだけど?っていう人が、とりあえず理解出来るように書きました!
Citation preview
Amazon Redshiftことはじめ
前提条件• 『 Redshiftを簡単に理解』する事を目的にしています。そのため、説明をバッサリと省略してます。
• DynamoDBを使うパターンもありますが、ここでは割愛しています
• PostgreSQLにアクセスできればクライアントは何でも良いですが、ここでは psqlとします
Redshiftとは?• AWSの DBサービス• 端的に言えば AmazonRDSと同様• 大規模データの分析に向いてる DB• PostgreSQLベース( Ver8.0.2)– SQL ・各種コマンドも Postgresqlと一緒–学習コストは『 Postgresqlのみ』– 8.4クライアントでも実行可能– Cent-OS 6なら「 yum install postgresql」
費用起動時間ごとの課金制。『起動しっぱなし』か、『スポットで起動させる』かは要件次第。 XLと 8XLの違いは処理速度。
全体図
PostgreSQLClient
User
S3
RedShiftTcp通信 :5439(RDBMS通信 )
S3へのファイルアップロード
(https) Access KeySecret Key
(S3アクセスして、CSV/TSVを取得 )
環境条件
上記3つがクリアできれば OK。つまり『会社・個人端末』や『 AWS EC2』等、好きなマシンで作業可能。
S3にファイルがアップロードできる
Redshiftに postgresqlクライアントでTCP通信出来る
AWS Access Key / Secret Keyを知っている
データ投入までの流れ
分析したいデータを、 CSV・ TSV形式でファイル保存
上記ファイルを、 S3にアップロード
psqlで COPYコマンドを発行し、ソース元を S3ファイルに指定
psqlで RedShiftにデータ投入用テーブルを作成する (create table)
通常のデータ一括投入と同様
テーブル作成時の注意点• テーブル型は
INTEGER, BIGINT, DECIMAL, REAL, DOUBLE PRECISION, BOOLEAN, CHAR, VARCHAR, DATE, TIMESTAMP
• おなじみの「 create table ~」でテーブル作成
投入時の注意点• 取込ファイルは TSV,CSV( json不可)• 文字コードは UTF-8• 投入中のエラーが1つでも有ると停止(スキップ不可)
投入エラー• データ型の不一致• 文字数オーバー• 項目数不足
とにかくここが肝。大量にデータがあるので、エラーパターンも尋常じゃなく多い…。
Apacheログなど、『不特定要素が有るログ』を一括投入するのは大変!投入前クリーニングを丁寧に行おう!
投入後処理• 後はただの PostgreSQL(互換 )なので、 psqlから SQLを投げる
• 特に解説することも無く…
自動化に向けて1. 解析したいデータを CSV化2. S3にアップロード3. psqlで COPY実行( RedShift取込)4. psqlで SQL発行し、結果を export
を Atmic処理。 3のデータ投入前に、『どうやってエラーがでないデータにするか?』がポイントかと。
以上