S3分析環境構築メモ

AWS分析環境構築メモ

S3

S3の料金計算をもとに検討内容を確認
https://calculator.aws/#/addService/S3

分析機能考慮

  • S3 select
    S3 Select は、GZIP または BZIP2 を使用した CSV および JSON オブジェクト、サーバー側暗号化オブジェクトの圧縮もサポートしているらしい。
    https://aws.amazon.com/jp/blogs/news/querying-data-without-servers-or-databases-using-amazon-s3-select/
    s3 select自体は制限が多く一つオブジェクトをもとにデータ取得でjoinなどはできない

  • Athena + Glue
    GlueはETLの役割を果たしS3上(s3以外でもクロールする)のオブジェクトを取り込んで定義済スキーマに保持し、Athenaにて分析用のクエリを実行できる

  • その他
    簡単に確認したいということであればS3に上げる必要もなくpythonでpandasで読み込むなりでも良さそうである

運用検討

前提として元データは自社構築のHDFSおよびDB上にあるので、分析に必要な分だけAWSに上がっていれば良い

  • データの保持期間はどうするか? データの削除はどうなるのか(スクリプトを書く必要があるか?)
  • 消した後のデータを見たい場合の再アップロードはどうするか?
  • s3 selectやathenaではobject指定でselectとなる(Hiveではテーブル指定でパーティションを日付で分けていたのでわかりやすかった、hdfs上の元データはhash化された文字列も付与されているので命名規則を決めて取得元のオブジェクト名がわかるようにしておく必要がある)
  • 保存先バケットはどうするか(テーブル毎になると思うが、その前に分析基盤識別文字/データ元/テーブル名とスラッシュ区切りにしておくか)
  • 権限グループについて(開発はアップロード、修正、参照ができて、分析者はselectだけ出来るぐらいか)
     AWS マネージドポリシー: AmazonS3ReadOnlyAccess
     https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/security-iam-awsmanpol.html
     athena側はどうなるか?
     https://docs.aws.amazon.com/ja_jp/athena/latest/ug/managed-policies.html