Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Sparkを活用した推薦基盤のバッチフレームワーク / Spark
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
CyberAgent
PRO
June 28, 2019
Technology
2.1k
0
Share
Sparkを活用した推薦基盤のバッチフレームワーク / Spark
内藤 遥
Jun 28, 2019
Data Engineering & Data Analysis WS#8
CyberAgent
PRO
June 28, 2019
More Decks by CyberAgent
See All by CyberAgent
2026年度新卒技術研修 サイバーエージェントのデータベース 活用事例とパフォーマンス調査入門
cyberagentdevelopers
PRO
10
9.9k
マッチングアプリにおけるユーザー構成の変化は、事業KPIにどう影響しているのか
cyberagentdevelopers
PRO
1
110
Geo-Experiments : ABEMAはなぜ新しい宣伝の効果検証にチャレンジするのか
cyberagentdevelopers
PRO
3
850
ABEMA NEWSにおける PoCをAIプロダクト化する ビジネスリードエンジニアリング
cyberagentdevelopers
PRO
0
400
チーム開発の基礎_研究を事業につなげるために
cyberagentdevelopers
PRO
8
5k
生成AIの研究活用_AILab2025研修
cyberagentdevelopers
PRO
12
7.3k
生成AIを活用したデータ分析でいまできること
cyberagentdevelopers
PRO
3
510
IBC 2025 動画技術関連レポート / IBC 2025 Report
cyberagentdevelopers
PRO
2
500
2025年度 生成AI 実践編
cyberagentdevelopers
PRO
8
1.2k
Other Decks in Technology
See All in Technology
もっとコンテンツをよく構造化して理解したいので、LLM 時代こそ Taxonomy の設計品質に目を向けたい〜!
morinota
0
220
GKE Agent SandboxでAIが生成したコードを 安全に実行してみた
lamaglama39
0
220
freeeで運用しているAIQAについて
qatonchan
0
430
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
3
140
OWASP APTSを眺めてみた
su3158
0
130
アプリブロック機能のつくりかたと、AIとHTMLの不合理な相性の良さについて
kumamotone
1
210
AI時代に越境し、 組織を変えるQAスキルの正体 / QA Skills for Transforming an Organization
mii3king
5
4.2k
AIエージェントの支払い基盤 AgentCore Payments概要
kmiya84377
1
150
Tachikawa.any 運営挨拶
daitasu
0
130
AIが盛んな時代に 技術記事を書き始めて起きた私の中での小さな変化
peintangos
0
360
エンタープライズの厳格な制約を開発者に意識させない:クラウドネイティブ開発基盤設計/cloudnative-kaigi-golden-path
mhrtech
0
370
変化の激しい時代をゴキゲンに生き抜くために 〜ストレスマネジメントのススメ〜
kakehashi
PRO
4
1.2k
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
130
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.9k
How to make the Groovebox
asonas
2
2.2k
Rails Girls Zürich Keynote
gr2m
96
14k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Building Applications with DynamoDB
mza
96
7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3k
Why Our Code Smells
bkeepers
PRO
340
58k
Are puppies a ranking factor?
jonoalderson
1
3.4k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
120
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
180
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 ਪન݁ՌΛॻ͖ग़͠·͢ λεΫͷछྨ