ローカルでの処理結果を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)'])←これは例