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
CyberAgent
PRO
June 28, 2019
Technology
0
2k
Sparkを活用した推薦基盤のバッチフレームワーク / Spark
内藤 遥
Jun 28, 2019
Data Engineering & Data Analysis WS#8
CyberAgent
PRO
June 28, 2019
Tweet
Share
More Decks by CyberAgent
See All by CyberAgent
2025年度 生成AI 実践編
cyberagentdevelopers
PRO
3
180
LLMを用いたメタデータベースレコメンド検証
cyberagentdevelopers
PRO
5
1.4k
CodeAgentとMCPで実現するデータ分析エージェント
cyberagentdevelopers
PRO
1
230
SQL Agentによるタップルのデータ利活用促進
cyberagentdevelopers
PRO
1
400
NAB Show 2025 動画技術関連レポート / NAB Show 2025 Report
cyberagentdevelopers
PRO
1
380
【2025年度新卒技術研修】100分で学ぶ サイバーエージェントのデータベース 活用事例とMySQLパフォーマンス調査
cyberagentdevelopers
PRO
7
10k
【CA.ai #1】未来を切り拓くAIエージェントの可能性
cyberagentdevelopers
PRO
3
150
【CA.ai #1】MCP世界への招待:AIエンジニアが創る次世代エージェント連携の世界
cyberagentdevelopers
PRO
2
150
【CA.ai #1】ABEMA のコンテンツ制作を最適化! 生成 AI × クラウド映像編集システム
cyberagentdevelopers
PRO
0
120
Other Decks in Technology
See All in Technology
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 完全版 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming - Expanded
tomzoh
4
3.2k
より良いプロダクトの開発を目指して - 情報を中心としたプロダクト開発 #phpcon #phpcon2025
bengo4com
1
3.1k
セキュリティの民主化は何故必要なのか_AWS WAF 運用の 10 の苦悩から学ぶ
yoh
1
140
AIのAIによるAIのための出力評価と改善
chocoyama
2
550
データプラットフォーム技術におけるメダリオンアーキテクチャという考え方/DataPlatformWithMedallionArchitecture
smdmts
5
630
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
220
Claude Code Actionを使ったコード品質改善の取り組み
potix2
PRO
6
2.2k
強化されたAmazon Location Serviceによる新機能と開発者体験
dayjournal
2
210
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
200
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
11
3.9k
Oracle Audit Vault and Database Firewall 20 概要
oracle4engineer
PRO
3
1.7k
Github Copilot エージェントモードで試してみた
ochtum
0
100
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
42
7.5k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
It's Worth the Effort
3n
185
28k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Adopting Sorbet at Scale
ufuk
77
9.4k
Code Review Best Practice
trishagee
68
18k
4 Signs Your Business is Dying
shpigford
184
22k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
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 ਪન݁ՌΛॻ͖ग़͠·͢ λεΫͷछྨ