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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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を使う” から ”AIに任せる” へ ─ 開発プロセスを再設計してAIを組織標準にするまで
cyberagentdevelopers
PRO
2
370
Databricks 導入から Genie 活用まで、全部やった話
cyberagentdevelopers
PRO
0
1.7k
専任DEゼロからの データ基盤構築 - Databricks x IaC x AIで 進める「データの民主化」-
cyberagentdevelopers
PRO
1
1.2k
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
10
9.9k
NAB Show 2026 動画技術関連レポート / NAB Show 2026 Report
cyberagentdevelopers
PRO
1
610
Local LLM Meetup #1 Opening
cyberagentdevelopers
PRO
1
530
LocalLLMで機密データを匿名化したい
cyberagentdevelopers
PRO
2
580
Vibe Fine-Tuning Version 2 — RunPod SSH で安く学習してみた
cyberagentdevelopers
PRO
1
530
2026年度新卒技術研修 サイバーエージェントのデータベース 活用事例とパフォーマンス調査入門
cyberagentdevelopers
PRO
11
13k
Other Decks in Technology
See All in Technology
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
0
420
Antigravity SDK for the Java Developer
glaforge
0
110
Genieを崇めよ
kameitomohiro
0
170
AIエージェントの権限管理 3: Agentic RAG の Fine grained access control 編
ren8k
0
180
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
280
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
25
17k
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
360
人間はどの意思決定を手放せるのか
kawasima
15
7.8k
ScotSecure West 2026 - Glasgow
raybugg
0
140
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.6k
Minecraft JavaのMODをSwiftで作る
1mash0
0
190
「どのログを見ればいい?」 から始めた サーバーレス障害解析
y_waka1
1
110
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
Producing Creativity
orderedlist
PRO
348
41k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
340
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
410
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
The Curse of the Amulet
leimatthew05
3
15k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
A Modern Web Designer's Workflow
chriscoyier
699
190k
Code Reviewing Like a Champion
maltzj
528
40k
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 ਪન݁ՌΛॻ͖ग़͠·͢ λεΫͷछྨ