Dive into hoge

データ分析関連の備忘録

ローカルでの処理結果をRedshiftに入れる

spark使わないでローカルで素朴にやる時の方法

sparkのpipeline使えば入出力は簡単だけど、まだ使い方がわからない…けどsklearn使えばローカル環境で色々できるんだオレは!というヒト向けに、下記のRedshiftに接続してデータ受け取ってPandasに入れるやつの続編。
http://blog.hatena.ne.jp/exotic_manifold/exotic-manifold.hatenablog.com/edit?entry=8599973812328031581

処理した結果…例えばクラスタリングした結果を元のテーブルにクラスタIDとして返して、教師ラベルとして活用したいというとき。
(手元でそのまま処理し続けられるならいいけど、Tableauとかで可視化したい、グリグリいじりたいというとき)

と言っても、スキーマを変えるような返し方はできないので、クラスタIDをいれるテーブルを作っておいて、元のテーブルとジョインすることになります、最終的には。

まずS3へ接続

# Connect to S3
import pandas_redshift as pr
pr.connect_to_s3(aws_access_key_id = 'AWSのアクセスキーIDを入れる',
                aws_secret_access_key = 'AWSのシークレットアクセスキーIDを入れる',
                bucket = 'データをいれたいS3のバケット名',
                subdirectory = '上記バケットのサブディレクトリ')

さらにRedshiftへ接続し、データを書き込む

# Write the DataFrame to S3 and then to redshift
pr.connect_to_redshift("データベース名", "URL", "ユーザ名", password="パスワード", port = ポート番号)
pr.pandas_to_redshift(data_frame = 書き込みたいデータ,
                      redshift_table_name = '書込先のテーブル名',
                      column_data_types =['varchar(16)', 'varchar(2)'])←これは例