#はじめに#
エキサイトの坂本です。
今回は初めてGlueを使うので、素直に初心者の感想を書きます。
#Glueスクリプトなど保存S3バケット変更#
Glueジョブ登録の際に自動でS3バケットが作成されます。1つはスクリプト保存バケットともう1つは一時的なデータ保存バケットが作成されます。これは事前にS3バケットを用意して、選択できます。
事前に作成バケット
|- スクリプト保存フォルダ
|- 一時的データ保存フォルダ
最後に以下のポリシー追加します
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "{Dev/Prod}ExciteHcAnalysis",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{dev/prodのaccount-id}:role/excite_glue_iam_role"
},
"Action": "*",
"Resource": [
"arn:aws:s3:::excite-{dev/prod}-analysis-glue",
"arn:aws:s3:::excite-{dev/prod}-analysis-glue/*"
]
}
]
}
#データのサイズオーバー#
事前にRedshift側にテーブル作成が前提です。
Glueジョブ実行したあと、Redshift側のデータを確認したら、なぜか既存カラムっぽいのカラムが増えていますね。これは従来のカラムにデータが入らないため、Glueが勝手に新しいカラムを追加しています。
Redshiftはsmallint型がありますが、Glueジョブの都合でINTになってしまうことで、Redshiftに書き込みの際にサイズオーバーになってしまいます。この場合はsmallintからintに変更すれば、解決です。
#コード品質を保つ#
Pythonで開発したら、フォーマットツールとして、isort、autopep8、autoflakeを導入したいですね。
これらを使ったら、Glueジョブの注釈ブロックには「##」(2個)から「#」(1個)に変換されます。ジョブ再登録の際にジョブ実行で特にエラーが発生しないが、ダイアグラムが生成されない。
以上です。