Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Sparkを活用した推薦基盤のバッチフレームワーク / Spark
Search
CyberAgent
PRO
June 28, 2019
Technology
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Sparkを活用した推薦基盤のバッチフレームワーク / Spark
内藤 遥
Jun 28, 2019
Data Engineering & Data Analysis WS#8
CyberAgent
PRO
June 28, 2019
More Decks by CyberAgent
See All by CyberAgent
AIを使った広告商品の開発と評価設計の話
cyberagentdevelopers
PRO
1
51
動画広告の効果を技術で改善
cyberagentdevelopers
PRO
1
57
なぜWINTICKETはマイクロサービスをやめたのか
cyberagentdevelopers
PRO
2
82
”AIを使う” から ”AIに任せる” へ ─ 開発プロセスを再設計してAIを組織標準にするまで
cyberagentdevelopers
PRO
2
420
Databricks 導入から Genie 活用まで、全部やった話
cyberagentdevelopers
PRO
0
1.9k
専任DEゼロからの データ基盤構築 - Databricks x IaC x AIで 進める「データの民主化」-
cyberagentdevelopers
PRO
1
1.4k
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
10
10k
NAB Show 2026 動画技術関連レポート / NAB Show 2026 Report
cyberagentdevelopers
PRO
1
750
Local LLM Meetup #1 Opening
cyberagentdevelopers
PRO
1
570
Other Decks in Technology
See All in Technology
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
200
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
170
AI時代のPRレビューにどう向き合うか?
kairim0
1
240
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
230
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
140
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
210
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
940
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
380
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
390
How to Design Configuration for Rails Applications
willnet
1
780
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
750
My Coaching Mixtape
mlcsv
0
360
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
800
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Site-Speed That Sticks
csswizardry
13
1.6k
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Chasing Engaging Ingredients in Design
codingconduct
0
360
Transcript
4QBSLΛ׆༻ͨ͠ਪનج൫ͷόονϑϨʔϜϫʔΫ ౻ ང +VO %BUB&OHJOFFSJOH%BUB"OBMZTJT84
ࣗݾհ ˔ ౻ ང ͳ͍ͱ͏ Α͏ ˔ ৽ଔೖࣾ ˔
ٕज़ຊ෦ ळ༿ݪϥϘॴଐ ˔ ͍ͬͯΔ͜ͱਪનγεςϜɺݕࡧγεςϜͷ։ൃɺӡ༻ ˔ ͖ͳϥʔϝϯ·ͥͦ ˔ ͖ͳ͓স͍ܳਓͳ͔·͖Μʹ܅
ϝσΟΞαʔϏεͱ ਪનج൫ͷόονϑϨʔϜϫʔΫ ਪનδϣϒʹ͍ͭͯ .BUSJY'BDUPSJ[BUJPO Ϩγϐ 5JQT ·ͱΊͱࠓޙͷల
ϝσΟΞαʔϏεͱ ਪનج൫ͷόονϑϨʔϜϫʔΫ ਪનδϣϒʹ͍ͭͯ .BUSJY'BDUPSJ[BUJPO Ϩγϐ 5JQT ·ͱΊͱࠓޙͷల
ϝσΟΞαʔϏεʹ͓͚Δਪન ˔ "CFNB57ɺ"NFCBϒϩάΛ͡Ίͱ͢Δ ༷ʑͳϝσΟΞαʔϏεͷڞ௨ج൫ͷػೳͱͯ͠ఏڙ
ਪનج൫ͷશମ૾ʹ͍ͭͯ ͜͜ͷ෦ʹ͍ͭͯ ͓͠·͢ ( ストリーム処理基盤 )
σʔλղੳج൫ 1BUSJPU ˔ )BEPPQϕʔεͷσʔλղੳج൫ ˓ )%'4ɺ:"3/ɺ)JWFɺ)#BTFɺ'MVNFɺ4QBSLɺFUD ˔ ϝσΟΞαʔϏεͷσʔλΛू ύοέʔδʹΑΔ)BEPPQσʔλղੳج൫ͷߏஙͱӡ༻ IUUQTXXXTMJEFTIBSFOFUDZCFSBHFOUIBEPPQ
όονϑϨʔϜϫʔΫʹ͍ͭͯ ˔ ਪનγεςϜͷόονॲཧఆܕతͳॲཧ͕ଟ͍ ˓ ֶश༻σʔλͷऔಘɺܗ ˓ Ϟσϧͷֶशɺਪન݁Ռͷ࡞ ˓ ਪન݁Ռͷॻ͖ग़͠ͳͲ
˔ ৽نαʔϏεͷಋೖίετӡ༻ίετΛݮ͍ͨ͠ όονϑϨʔϜϫʔΫ։ൃͷඞཁੑ
όονϑϨʔϜϫʔΫʹ͍ͭͯ ˔ 4QBSLΛར༻લఏͰ։ൃ ˓ "QBDIF#FBNΛͬͯࢄॲཧΤϯδϯΛநԽ͢Δ͜ͱ ݕ౼͕ͨ͠ɺࡉ͔͍ϓϩύςΟͷઃఆෳࡶͳॲཧ͕Ͱ͖ͳͦ͏ͩͬͨ ˔ +BWB 4QSJOH#PPU
˓ %*ͳͲ͍উखͷྑ͞ ˓ ๛ͳ࣮
࣮ͷߏཁૉ ˔ δϣϒ ˓ Ұ࿈ͷॲཧͷྲྀΕ ˓ όον͜ͷ୯ҐͰ࣮ߦ͞ΕΔ ˙ ਪનδϣϒɺϞσϧͷΦϑϥΠϯධՁδϣϒɺʜ
˓ ݸ ͷδϣϒ͕ຊ൪ڥͰՔಇத ˔ λεΫ ˓ δϣϒͷதʹؚ·ΕΔͻͱ·ͱ·Γͷॲཧͷ୯Ґ ˙ σʔλͷಡΈࠐΈɺਪન݁Ռͷॻ͖ग़͠ɺʜ ˓ λεΫ͝ͱʹ࣮Ϋϥε͕ଘࡏ͠ɺઃఆʹΑΔସ͕Ͱ͖Δ
࣮ͷߏཁૉ ˔ Ϩγϐ ˓ ࣮ߦ͢Δδϣϒͷछྨɺδϣϒͷ֤छλεΫͷઃఆͳͲɺ δϣϒͷதΛܗ͢ΔઃఆϑΝΠϧ ˓ :".-ܗࣜͰཧ ޙड़
ϝσΟΞαʔϏεͱ ਪનج൫ͷόονϑϨʔϜϫʔΫ ਪનδϣϒʹ͍ͭͯ .BUSJY'BDUPSJ[BUJPO Ϩγϐ 5JQT ·ͱΊͱࠓޙͷల
ਪનδϣϒσʔλϑϩʔਤ શମ૾ খ͗ͯ͢͞ݟ͑ͳ͍ʂ ˔࣮͕ସՄೳͳλεΫ ˔δϣϒΈࠐΈͷλεΫ
ਪનδϣϒσʔλϑϩʔਤ શମ૾
ਪનδϣϒσʔλϑϩʔਤ લ
ਪનδϣϒσʔλϑϩʔਤ લ ˔ 4QBSL4FTTJPOΛੜ ˓ 4QBSL্ͰΞϓϦέʔγϣϯΛ࣮ߦ͢ΔͨΊͷΤϯτϦʔϙΠϯτ ˓ ࣮ߦڥ ସՄ
˙ :"3/ 1BUSJPU ˙ ϩʔΧϧ
ਪનδϣϒσʔλϑϩʔਤ લ ˔ ֶश༻σʔλͷಡΈࠐΈ ˓ 4QBSL%BUBTFUΛੜ ˓ σʔλιʔε ସՄ
˙ 4QBSL42- ˙ )%'4 ˙ 4 ˙ #JH2VFSZ ˙ ʜ
ਪનδϣϒσʔλϑϩʔਤ લ ˔ αʔϏεґଘͷલॲཧΛద༻ ˓ 4QBSL42-Ͱ͍͠ෳࡶͳॲཧ ˓ αʔϏεͷϚελʔσʔλ ֎෦σʔλ
ͷ+PJOͳͲ ˔ ਪન݁ՌͷΞΠςϜͷϑΟϧλ݅ͷఆٛ ˓ ΞΠςϜͷϑΟϧλ ˙ ৽نʹՃ͞Ε͔ͯΒ̎िؒҎͷΞΠςϜ ˙ 17͕Ҏ্ͷΞΠςϜͳͲ ˓ Ϣʔβ UPΞΠςϜͷϑΟϧλ ˙ ϢʔβͷߪೖཤྺͳͲ ˓ ΞΠςϜ UPΞΠςϜͷϑΟϧλ ˙ ͋ΔΞΠςϜʹର͢ΔಉҰδϟϯϧͷΞΠςϜͳͲ ˓ ޙଓͷਪન݁ՌͷੜͰద༻͞ΕΔ
ਪનδϣϒσʔλϑϩʔਤ લ ඞཁʹԠͯ͡ϨγϐͷઃఆͰ ֎෦σʔλΛऔಘɺՃͰ͖Δ
ਪનδϣϒσʔλϑϩʔਤ લ { "id": "foo", "name": "nameA", "description": "xxx"
}, ... { "id": "foo" }, { "id": "bar" }, { "id": "hoge" }, ... ["foo", "bar", "hoge",...] 例)
ਪનδϣϒσʔλϑϩʔਤ લ ˔ ਪન݁ՌٴͼϞσϧΛੜ ˓ ΞϧΰϦζϜ 4QBSL.-MJCΛόονϑϨʔϜϫʔΫʹ߹Θ͍ͤͯ͘͢͠ ͨͷɺಠ࣮ࣗͨ͠ͷ͋Δ ˓
ΞϧΰϦζϜ ସՄ ˙ .BUSJY'BDUPSJ[BUJPO ޙड़ ˙ 8PSE7FD ˙ *UFNUP*UFN$PMMBCPSBUJWF'JMUFSJOH ˙ ʜ ˔ ඞཁʹԠֶͯ͡शࡁͷϞσϧΛ औಘɾར༻Ͱ͖Δ
ਪનδϣϒσʔλϑϩʔਤ શମ૾
ਪનδϣϒσʔλϑϩʔਤ ޙ
ਪનδϣϒσʔλϑϩʔਤ ޙ ˔ αʔϏεґଘͷޙॲཧΛద༻ ˓ ਪન݁Ռͷ֤ΞΠςϜʹର͢ΔଐੑใͷՃͳͲ
ਪનδϣϒσʔλϑϩʔਤ ޙ ˔ ਪન݁Ռͷॻ͖ग़͠ ˓ σʔλετΞ ସՄ ˙ )#BTF
˙ )%'4 ˙ ϩʔΧϧ %SJWFSɺσόοά༻ ˙ 4 ˙ #JH2VFSZ ˙ ʜ
ਪનδϣϒσʔλϑϩʔਤ ޙ ˔ ϞσϧσʔλΛඞཁͳσʔλετΞʹॻ͖ग़͢͜ͱ͕Ͱ͖Δ ˓ ϑΝΠϧͱͯ͠ॻ͖ग़͠ɺΞΠςϜ͝ͱʹ ,74ͷॻ͖ग़͠Ͱ͖Δ
ਪનδϣϒσʔλϑϩʔਤ ޙ ˔ Ϟσϧɺٴͼਪન݁Ռͷόʔδϣϯͷߋ৽ ˓ ;PP,FFQFS্ͰόʔδϣϯใΛཧ͓ͯ͠Γɺ όʔδϣϯ͕ߋ৽͞Ε࣍ୈɺ࠷৽ͷόʔδϣϯใ͕ "1*ʹ௨͞ΕΔ
ϝσΟΞαʔϏεͱ ਪનج൫ͷόονϑϨʔϜϫʔΫ ਪનδϣϒʹ͍ͭͯ .BUSJY'BDUPSJ[BUJPO Ϩγϐ 5JQT ·ͱΊͱࠓޙͷల
.BUSJY'BDUPSJ[BUJPO ˔ ϢʔβɾΞΠςϜͷධՁߦྻΛߦྻղ͢Δख๏ ˓ ϢʔβɺΞΠςϜͷີϕΫτϧΛಘΔ ˓ ͋ΔϢʔβʹରͯ͠ɺϕΫτϧͷ ੵͷ͕େ͖͍ ॱʹΞΠςϜΛਪન
˓ ͋ΔΞΠςϜʹରͯ͠ɺϕΫτϧͷ ίαΠϯྨࣅͷ͕େ͖͍ ॱʹ ؔ࿈ΞΠςϜͱͯ͠ਪન ˔ ಋೖ͕͘͢͠ɺଟ͘ͷϝσΟΞαʔϏεͰར༻͍ͯ͠Δ
.BUSJY'BDUPSJ[BUJPO ˔ ҉తධՁ Ӿཡཤྺߪೖཤྺ Λར༻͢Δ߹ɺ Ӿཡɺ͓ؾʹೖΓɺߪೖͷΑ͏ʹΞΫγϣϯ͝ͱʹ ධՁΛώϡʔϦεςΟοΫʹܾΊͯΈ߹ΘͤΔ͜ͱ͕͋Δ ˔ ΦϑϥΠϯͷਫ਼ධՁ"#ςετͰͷΦϯϥΠϯͷਫ਼ධՁΛ௨ͯ͠
ྑ͍ͱࢥΘΕΔΈ߹ΘͤΛܾఆ
.BUSJY'BDUPSJ[BUJPO ˔ 4QBSL.--JCͷ "-4.PEFMͰҎԼͷϝιου͕ఏڙ͞Ε͍ͯΔ ˓ SFDPNNFOE'PS"MM6TFST WҎ߱ ˙ ֤Ϣʔβʹ
ࢦఆͨ݅͠ͷΞΠςϜΛਪન͢Δ ˓ SFDPNNFOE'PS6TFS4VCTFU WҎ߱ ˙ ࢦఆͨ͠Ϣʔβ܈ʹରͯ͠ɺࢦఆͨ݅͠ͷΞΠςϜΛਪન͢Δ ͕ɺ͍ͣΕϑΟϧλΛೖΕΔػೳ͕ͳ͍ͨΊɺࣅͨΑ͏ͳॲཧΛ "-4.PEFMͷ֎ଆͰ࣮͠ɺͦͷ෦ͰϑΟϧλΛద༻͍ͯ͠Δ
ϝσΟΞαʔϏεͱ ਪનج൫ͷόονϑϨʔϜϫʔΫ ਪનδϣϒʹ͍ͭͯ .BUSJY'BDUPSJ[BUJPO Ϩγϐ 5JQT ·ͱΊͱࠓޙͷల
Ϩγϐʹ͍ͭͯྫ
Ϩγϐʹ͍֦ͭͯுػೳ ˔ Πϯϙʔτػೳ ˓ @JODMVEF ͷΩʔʹରͯ͠ɺ:".-ϑΝΠϧͷύεΛࢦఆ͢Δ ͜ͱͰɺͦͷϑΝΠϧͷઃఆใΛಡΈࠐΉ͜ͱ͕Ͱ͖Δ
Ϩγϐʹ͍֦ͭͯுػೳ _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
'SFF.BSLFSʹΑΔςϯϓϨʔτॲཧ ˔ ਪનόονϑϨʔϜϫʔΫͰ 'SFF.BSLFSͷ ςϯϓϨʔτΤϯδϯΛར༻͓ͯ͠Γɺ42-ϑΝΠϧ Ϩγϐʹॻ͔ΕͨมɺΧελϜϝιουʹରͯ͠ Λೖ͢Δ͜ͱ͕Ͱ͖Δ
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
5JQT5PQ.݅ͷਪનΞΠςϜͷநग़ ˔ େͳ/݅ͷΞΠςϜྻ͔ΒείΞͷߴ͍5PQ.݅ͷ ΞΠςϜΛநग़͢Δॲཧ ˓ ./ ˓ ԼҐͷΞΠςϜݫີʹιʔτ͢Δඞཁͳ͍ ˔ )FBQ4PSUΛ͏͜ͱͰɺܭࢉྔΛ
0 / ʹۙࣅͰ͖Δ ˓ +BWBͷඪ४ιʔτ 5JN4PSU
5JQT%BUBTFUUP-PDBM*UFSBUPS ʹ͍ͭͯ ˔ %BUBTFUUP-PDBM*UFSBUPS Λ͏ͱɺ ࠷ޙʹ TIVGGMF͕ೖͬͨ͋ͱ͔ΒྻͰॲཧ͞ΕΔ ͨΊɺ લʹ໌ࣔతʹ SFQBSUJUJPOͳͲͷ
TIVGGMFॲཧΛೖΕΔ ඞཁ͕͋Δ
5JQT,SZPͱ GBTUVUJMͷ 0QFO)BTI.BQʹ͍ͭͯ ˔ αΠζͷඇৗʹେ͖͍ 0QFO)BTI.BQΛ ,SZPͰσγϦΞϥΠζ͢Δͱඇৗʹ͘ͳΔ͕͋Δ ˓ ϋογϡςʔϒϧͷিಥ͕සൃ͢ΔͨΊ ˓
࣮ͷͱ͍͏ΑΓ͓ޓ͍ͷ༷ͷ૬ੑͷ ˓ ؆୯ͳରࡦͱͯ͠ඪ४ͷ)BTI.BQ GBTUVUJMͷ -JOLFE0QFO)BTI.BQΛ͏ͳͲɾɾ
ϝσΟΞαʔϏεͱ ਪનج൫ͷόονϑϨʔϜϫʔΫ ਪનδϣϒʹ͍ͭͯ .BUSJY'BDUPSJ[BUJPO Ϩγϐ 5JQT ·ͱΊͱࠓޙͷల
·ͱΊͱࠓޙͷల ˔ 4QBSLΛ׆༻ͨ͠ਪનج൫ͷόονϑϨʔϜϫʔΫʹ͍ͭ ͯɺਪનδϣϒͷσʔλϑϩʔਤͳͲΛ;·͑ͯհͨ͠ ˔ ࠓޙͷల ˓ ΦϑϥΠϯਫ਼ධՁɺٴͼਫ਼ʹؔ͢Δ֤छϝτϦΫεͷ ϨϙʔςΟϯάपΓࣗಈԽ ˓
ਂֶशͷಋೖ ˙ 5FOTPS'MPX0O4QBSL ˙ %FFQMFBSOJOHK0O4QBSLͳͲ͋Δ͕ɾɾ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
ਪનͷछྨ छྨ આ໌ ར༻Օॴɺ༻్ Ϣʔβ UPΞΠςϜ Ϣʔβʹରͯ͠ڵຯͷ͋Γͦ͏ͳ ΞΠςϜΛਪન͢Δ ϚΠϖʔδͳͲ ΞΠςϜ
UPΞΠςϜ ͋ΔΞΠςϜʹରͯؔ͠࿈ͷ͋Δ ΞΠςϜΛਪન͢Δ ΞΠςϜৄࡉϖʔδͳͲ ϥϯΩϯά ԿΒ͔ͷࢦඪʹج͍ͮͯ ΞΠςϜΛϥϯΩϯάԽ͢Δ ϥϯΩϯάϖʔδ ਪન݁Ռ͕ͳ͍ͱ͖ͷ ϑΥʔϧόοΫ༻ͳͲ
छྨ આ໌ 'FUDI σʔλΛऔಘ͠·͢ 'JMUFS σʔλΛϑΟϧλ͠·͢ 5SBOTGPSN σʔλΛม͠·͢ $PMMFDU σʔλΛऩू͠·͢
6QMPBE σʔλΛॻ͖ग़͠·͢ -BVODI 4QBSL4FTTJPOΛ࡞͠·͢ 3FBE 4QBSL%BUBTFUΛ࡞͠·͢ 4FSWJDF1SPDFTTJOH αʔϏεґଘͷલॲཧ ޙॲཧΛద༻͠·͢ 3FDPNNFOE Ϟσϧٴͼਪન݁ՌΛ࡞͠·͢ 8SJUF ਪન݁ՌΛॻ͖ग़͠·͢ λεΫͷछྨ