Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ZOZOSUIT関連データのパイプライン構築について /create zozosuit ...

ZOZOSUIT関連データのパイプライン構築について /create zozosuit measurements data pipeline

Title
ZOZOSUIT関連データのパイプライン構築について

Speaker
大嶋淳司 Atsushi Oshima (開発部 SREチーム)

2019/07/25 ZOZO Technologies Meetup #11 for SRE Engineer
https://zozotech-inc.connpass.com/event/136159/
#zozotech_meetup

atsushi.oshima

October 01, 2021
Tweet

More Decks by atsushi.oshima

Other Decks in Technology

Transcript

  1. ˜;0;05FDIOPMPHJFT *OD ಋೖ  എܠ  ղܾࡦ ύλʔϯ ࣗ෼ͨͪͰ෼ੳ؀ڥΛͭ͘Δ ʢ"NB[PO"UIFOBʣ

    ˠ෼ੳ͕։ൃͷยखؒʹͳͬͯ͠·͏ ύλʔϯ ෼ੳ෦ʹσʔλΛఏڙ͠ɺ෼ੳͯ͠΋Β͏ ˠࠓޙʹߴ౓ͳ෼ੳΛߟ͑Δͱ࠷ద 6
  2. ˜;0;05FDIOPMPHJFT *OD ಋೖ  എܠ  ෼ੳ෦ 7 分析部 株式会社ZOZOテクノロジーズ

    本社 青山 株式会社ZOZO 本社 海浜幕張(千葉) 開発部 (計測)
  3. ˜;0;05FDIOPMPHJFT *OD σʔλύΠϓϥΠϯʢ;0;046*5ʣ  ܭଌσʔλ 11 DynamoDB S3 用途 サービス用

    デバッグ、調査用 パフォーマンス影響 読み込みキャパシティを大量に 消費する可能性がある なし
  4. ˜;0;05FDIOPMPHJFT *OD σʔλύΠϓϥΠϯʢ;0;046*5ʣ αʔϏε঺հ 12 AWS S3(Amazon Simple Storage Service)

    • クラウドストレージ • コスト効率高い • 高可用性(99.999999999%) • 暗号化、柔軟なアクセス管理 AWS Glue • データを整理、最適化、検証、フォーマット • 完全マネージド型 ETL (抽出、変換、ロード) サービス • サーバーレス
  5. ˜;0;05FDIOPMPHJFT *OD σʔλύΠϓϥΠϯʢ;0;046*5ʣ ߏ੒ਤ 13 AWS S3 AWS S3 AWS

    Glue (crawler) AWS Glue (ETL job) data catalog (処理前) (処理後)
  6. ˜;0;05FDIOPMPHJFT *OD σʔλύΠϓϥΠϯʢ;0;046*5ʣ ߏ੒ਤ 14 AWS S3 AWS S3 AWS

    Glue (crawler) AWS Glue (ETL job) data catalog (処理前) (処理後)
  7. ˜;0;05FDIOPMPHJFT *OD σʔλύΠϓϥΠϯʢ;0;046*5ʣ  4ʢॲཧલʣ ;0;046*5ܭଌσʔλʢKTPOʣ 16 ・ ・ ・

    "id": 123456789, "gender_id": 1, "bust": 853.3767035950822, "shoulder": 423.1653994163682, "neck": 354.9143235711635, "height": 1800, ・ ・ ・ ・ 分析に 不要なデータ ex. 3D頂点データ
  8. ˜;0;05FDIOPMPHJFT *OD σʔλύΠϓϥΠϯʢ;0;046*5ʣ ߏ੒ਤ 17 AWS S3 AWS S3 AWS

    Glue (crawler) AWS Glue (ETL job) data catalog (処理前) (処理後)
  9. ˜;0;05FDIOPMPHJFT *OD σʔλύΠϓϥΠϯʢ;0;046*5ʣ ߏ੒ਤ 21 AWS S3 AWS S3 AWS

    Glue (crawler) AWS Glue (ETL job) data catalog (処理前) (処理後)
  10. ˜;0;05FDIOPMPHJFT *OD σʔλύΠϓϥΠϯʢ;0;046*5ʣ &5-KPC 27 import sys from awsglue.transforms import

    * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from awsglue.dynamicframe import DynamicFrame import datetime today = datetime.date.today() foldername = today.strftime('%Y-%m-%d') 〜 (省略)〜 df = applymapping1.toDF() # DynamicFrameをtoDF methodによりDataFrameに変換します df_rep = df.repartition(1) # repartition methodによりpartition数を1にします dyf_rep = DynamicFrame.fromDF(df_rep, glueContext, "dyf_rep") # DataFrameをDynamicFrameに変換します datasink2 = glueContext.write_dynamic_frame.from_options(frame = dyf_rep , connection_type = "s3", connection_options = {"path": "s3://s3-output- 20190722/"+foldername "compression": "gzip"}, format = "json", transformation_ctx = "datasink2") job.commit() モジュールインポート、フォルダ名定義 ファイルを一つにまとめる 出力先指定、gzip圧縮
  11. ˜;0;05FDIOPMPHJFT *OD σʔλύΠϓϥΠϯʢ;0;046*5ʣ ߏ੒ਤ 28 AWS S3 AWS S3 AWS

    Glue (crawler) AWS Glue (ETL job) data catalog (処理前) (処理後)