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

Sparkを活用した推薦基盤のバッチフレームワーク / Spark

Sparkを活用した推薦基盤のバッチフレームワーク / Spark

内藤 遥
Jun 28, 2019
Data Engineering & Data Analysis WS#8

CyberAgent

June 28, 2019
Tweet

More Decks by CyberAgent

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ ˔ ಺౻ ང ͳ͍ͱ͏ Α͏ ˔ ೥ ৽ଔೖࣾ ˔

    ٕज़ຊ෦ ळ༿ݪϥϘॴଐ ˔ ΍͍ͬͯΔ͜ͱਪનγεςϜɺݕࡧγεςϜͷ։ൃɺӡ༻ ˔ ޷͖ͳϥʔϝϯ୆࿷·ͥͦ͹ ˔ ޷͖ͳ͓স͍ܳਓͳ͔΍·͖Μʹ܅
  2. ࣮૷ͷߏ੒ཁૉ  ˔ δϣϒ ˓ Ұ࿈ͷॲཧͷྲྀΕ ˓ όον͸͜ͷ୯ҐͰ࣮ߦ͞ΕΔ ˙ ਪનδϣϒɺϞσϧͷΦϑϥΠϯධՁδϣϒɺʜ

    ˓ ໿ݸ ͷδϣϒ͕ຊ൪؀ڥͰՔಇத ˔ λεΫ ˓ δϣϒͷதʹؚ·ΕΔͻͱ·ͱ·Γͷॲཧͷ୯Ґ ˙ σʔλͷಡΈࠐΈɺਪન݁Ռͷॻ͖ग़͠ɺʜ ˓ λεΫ͝ͱʹ࣮૷Ϋϥε͕ଘࡏ͠ɺઃఆʹΑΔ੾ସ͕Ͱ͖Δ
  3. ਪનδϣϒσʔλϑϩʔਤ લ൒  ˔ αʔϏεґଘͷલॲཧΛద༻ ˓ 4QBSL42-Ͱ͸೉͍͠ෳࡶͳॲཧ ˓ αʔϏεͷϚελʔσʔλ ֎෦σʔλ

    ͷ+PJOͳͲ ˔ ਪન݁ՌͷΞΠςϜͷϑΟϧλ৚݅ͷఆٛ ˓ ΞΠςϜͷϑΟϧλ ˙ ৽نʹ௥Ճ͞Ε͔ͯΒ̎िؒҎ಺ͷΞΠςϜ ˙ 17͕Ҏ্ͷΞΠςϜͳͲ ˓ Ϣʔβ UPΞΠςϜͷϑΟϧλ ˙ ϢʔβͷߪೖཤྺͳͲ ˓ ΞΠςϜ UPΞΠςϜͷϑΟϧλ ˙ ͋ΔΞΠςϜʹର͢ΔಉҰδϟϯϧͷΞΠςϜͳͲ ˓ ޙଓͷਪન݁Ռͷੜ੒Ͱద༻͞ΕΔ
  4. ਪનδϣϒσʔλϑϩʔਤ લ൒  { "id": "foo", "name": "nameA", "description": "xxx"

    }, ... { "id": "foo" }, { "id": "bar" }, { "id": "hoge" }, ... ["foo", "bar", "hoge",...] 例)
  5. ਪનδϣϒσʔλϑϩʔਤ લ൒  ˔ ਪન݁ՌٴͼϞσϧΛੜ੒ ˓ ΞϧΰϦζϜ͸ 4QBSL.-MJCΛόονϑϨʔϜϫʔΫʹ߹Θͤͯ࢖͍΍͘͢͠ ͨ΋ͷ΍ɺಠ࣮ࣗ૷ͨ͠΋ͷ΋͋Δ ˓

    ΞϧΰϦζϜ ੾ସՄ ˙ .BUSJY'BDUPSJ[BUJPO ޙड़ ˙ 8PSE7FD ˙ *UFNUP*UFN$PMMBCPSBUJWF'JMUFSJOH ˙ ʜ ˔ ඞཁʹԠֶͯ͡शࡁͷϞσϧΛ औಘɾར༻Ͱ͖Δ
  6. .BUSJY'BDUPSJ[BUJPO  ˔ ϢʔβɾΞΠςϜͷධՁ஋ߦྻΛߦྻ෼ղ͢Δख๏ ˓ ϢʔβɺΞΠςϜͷີϕΫτϧΛಘΔ ˓ ͋ΔϢʔβʹରͯ͠ɺϕΫτϧͷ ಺ੵͷ஋͕େ͖͍ ॱʹΞΠςϜΛਪન

    ˓ ͋ΔΞΠςϜʹରͯ͠ɺϕΫτϧͷ ίαΠϯྨࣅ౓ͷ஋͕େ͖͍ ॱʹ ؔ࿈ΞΠςϜͱͯ͠ਪન ˔ ಋೖ͕͠΍͘͢ɺଟ͘ͷϝσΟΞαʔϏεͰར༻͍ͯ͠Δ
  7. .BUSJY'BDUPSJ[BUJPO  ˔ 4QBSL.--JCͷ "-4.PEFMͰ͸ҎԼͷϝιου͕ఏڙ͞Ε͍ͯΔ ˓ SFDPNNFOE'PS"MM6TFST WҎ߱ ˙ ֤Ϣʔβʹ

    ࢦఆͨ݅͠਺ͷΞΠςϜΛਪન͢Δ ˓ SFDPNNFOE'PS6TFS4VCTFU WҎ߱ ˙ ࢦఆͨ͠Ϣʔβ܈ʹରͯ͠ɺࢦఆͨ݅͠਺ͷΞΠςϜΛਪન͢Δ ͕ɺ͍ͣΕ΋ϑΟϧλΛೖΕΔػೳ͕ͳ͍ͨΊɺࣅͨΑ͏ͳॲཧΛ "-4.PEFMͷ֎ଆͰ࣮૷͠ɺͦͷ෦෼ͰϑΟϧλΛద༻͍ͯ͠Δ
  8. Ϩγϐʹ͍֦ͭͯுػೳ  _include: - config/product/recipe/template.yml … launch: id: yarn properties:

    <<: *spark_yarn_prop_template SFDPNNFOE@TBNQMFZNM launch: id: yarn properties: spark.executor.memory: 10g spark.executor.instances: 10 … _yarn: _template: _properties: &spark_yarn_prop_template spark.executor.memory: 10g spark.executor.instances: 10 … UFNQMBUFZNM
  9. SELECT * FROM db WHERE dt = '${dtf('-1d', 'yyyy-MM-dd')}' AND

    service_id = '${.data_model["service.id.ameblo"]}' SELECT * FROM db WHERE dt = '2019-06-27' AND service_id = 'foo' 'SFF.BSLFSʹΑΔςϯϓϨʔτॲཧ  MPBE@TBNQMF@EBUBTRM
  10. 5JQT,SZPͱ GBTUVUJMͷ 0QFO)BTI.BQʹ͍ͭͯ ˔ αΠζͷඇৗʹେ͖͍ 0QFO)BTI.BQΛ ,SZPͰσγϦΞϥΠζ͢Δͱඇৗʹ஗͘ͳΔ໰୊͕͋Δ ˓ ϋογϡςʔϒϧͷিಥ͕සൃ͢ΔͨΊ ˓

    ࣮૷ͷ໰୊ͱ͍͏ΑΓ͸͓ޓ͍ͷ࢓༷ͷ૬ੑͷ໰୊ ˓ ؆୯ͳରࡦͱͯ͠͸ඪ४ͷ)BTI.BQ΍ GBTUVUJMͷ -JOLFE0QFO)BTI.BQΛ࢖͏ͳͲɾɾ
  11. ਪનͷछྨ छྨ આ໌ ར༻Օॴɺ༻్ Ϣʔβ UPΞΠςϜ Ϣʔβʹରͯ͠ڵຯͷ͋Γͦ͏ͳ ΞΠςϜΛਪન͢Δ ϚΠϖʔδͳͲ ΞΠςϜ

    UPΞΠςϜ ͋ΔΞΠςϜʹରͯؔ͠࿈ͷ͋Δ ΞΠςϜΛਪન͢Δ ΞΠςϜৄࡉϖʔδͳͲ ϥϯΩϯά ԿΒ͔ͷࢦඪʹج͍ͮͯ ΞΠςϜΛϥϯΩϯάԽ͢Δ ϥϯΩϯάϖʔδ ਪન݁Ռ͕ͳ͍ͱ͖ͷ ϑΥʔϧόοΫ༻ͳͲ
  12. छྨ આ໌ 'FUDI σʔλΛऔಘ͠·͢ 'JMUFS σʔλΛϑΟϧλ͠·͢ 5SBOTGPSN σʔλΛม׵͠·͢ $PMMFDU σʔλΛऩू͠·͢

    6QMPBE σʔλΛॻ͖ग़͠·͢ -BVODI 4QBSL4FTTJPOΛ࡞੒͠·͢ 3FBE 4QBSL%BUBTFUΛ࡞੒͠·͢ 4FSWJDF1SPDFTTJOH αʔϏεґଘͷલॲཧ ޙॲཧΛద༻͠·͢ 3FDPNNFOE Ϟσϧٴͼਪન݁ՌΛ࡞੒͠·͢ 8SJUF ਪન݁ՌΛॻ͖ग़͠·͢ λεΫͷछྨ