[NBP] Gradivo
zvonkoBogdan
sekiro ako je early onda racunas da ga nisi uhvatio s watermarkom nego s triggerom, ako je on time onda je uhvacen watermarkom, ako je onaj treci, zakasnjeli, onda znaci da je naknadno ponovno uhvacen triggerom
ZalutaliStudent
Pleteni miš U pravu si, sory zaboravio sam to.
tetak
Jel rješavao neko zi na Edgaru? na zadnjem zadatku sa emitiranjem, u prvom prozoru prema mom računu emitira se 1 Early i zatim 3 On time, pa me zanima kak napisati n-torku za ontime s obzirom da je između procesorskih vremena a treba napisati proc vrijeme u n-torki
MrPeanutButter
tetak
(12:06,12:00-12:02,E,1)
(12:07,12:00-12:02,O,3)
anon00
MrPeanutButter
Zašto se tu 1 i 3 ne zbrajaju?
Ili se zbraja samo unutar isto ‘emit’-a ? Kao svi Early se zbrajaju, svi OnTime se zbrajaju i svi Late se zbrajaju zasebno ili?
Takoder, zasto 2 ne ulazi u rijesenje, a imamo .withLateFirings(AfterCount(2))) - dakle 2s nakon watermarka ako sam dobro skuzio?
Kaladonter
anon00 Koliko sam ja skužio to afterCount(2) ti znači da se nakon watermarka eventovi prijavljuju nakon svakgo drugog. Npr. u zadnjem prozoru ide prvo 8 i on se ne prijavi nego se prijavi tek nakon 9, jer je njih dvoje u tom windowu nakon watermarka, dok nakon 2 u ovom zadatku ne dođe više nikoji event u prvom windowu pa se 2 uopće ne prijavi. Moguće da sam u krivu al tako sam ja to shvatio.
I3loodHound
anon00
Nek me neko ispravi ak sam u krivu, ali 1 i 3 se ne zbrajaju zbok discarding akumulacije, odnosno 1 se early emita u 1:06, onda se 3 on time emita u 1:07 neovisno o ovoj 1. Ako bi bili u istom emmiting time ili ako bi imali accumulating ili accumulating & retracting onda bi se zbrajali
anon00
Kaladonter Sad sam gledao po internetu i mislim da si dobro napisao
Eo i za druge kolege cu proci kroz zadatak pa da bude lakse za skuziti
Dakle
.apply(Window.into(FixedWindows.of(TWO_MINUTES))
- Oznacava da cemo na X osi imati FIKSNE prozore od 2 min svaki
.triggering(AfterWatermark()
- Ovo znaci da ce se event trigerati tocno kad dodemo do watermarka
To je taj On time event
- Watermark je ono gdje vam krivulja (heuristika) dodiruje desni dio trenutnog prozora (iliti najvisa tocka krivulje u tom prozoru)
.withEarlyFirings(AlignedDelay(ONE_MINUTE))
- Ovo je Early event - on je u funkciji od nailaska na prvi element pa do watermark-a
U zagradi je uvijet koji kaze da kad dodemo do nekog elementa napravi delay do pune minute pa tek onda okini early event (tj. čekaj jer možda dođe još neki element kojeg ces obraditi zajedno s ovim)
.withLateFirings(AfterCount(2)))
Ovo je Late event koji počinje djelovati tek nakon watermarka
U uvijetu ima AfterCount - tj propagiraj ovaj event tek nakon svaka 2 elementa koja su se dogodila, ako ne skupi 2 elementa onda se nikad nece ni okinuti.
.discardingFiredPanes())
Returns a new Window PTransform that uses the registered WindowFn and Triggering behavior, and that discards elements in a pane after they are triggered (Nisam najsigurniji kako bi ovo protumacio)
Edit: Evo kolega gore je super objasnio
.apply(Sum.integersPerKey());
Vrijednosti unutar istog triggera/eventa se zbrajaju
Dakle ako sad gledamo ovu gore sliku
Imamo 3 prozora na X osi: 12:00-12:02 | 12:02 - 12:04 | 12:04 - 12:06
Watermark 1. prozora je na 12:07
Watermark 2. prozora je na 12:08 i mrvicu iznad tog, ali nije bitno
Watermark 3. prozora je na 12:09
Događaj 1:
Dogodi se u 12:05 i nešto sitno - i od tad pa dok ne dođe do pune minute (AlignedDelay(ONE_MINUTE)) traje naš prvi Early trigger. Kako nismo naišli na nijedan drugi događaj onda se taj event propagira dalje i ukupni zbroj je
Događaj 3:
Dogodi se u 12:06 i nešto sitno i njega ce pokupiti onaj watermark trigger (AfterWatermark())
Dogadaj 2:
Kad se dode do njega pocinje .withLateFirings(AfterCount(2))), ali je problem sto nikad ne dode do Count=2 pa se nikad ne emit-a taj event
Dogadaj 5 je early i završi u 12:07
Dogadaj 4 i 6 su early i zavrse u 12:08 - nisu watermark jer je watermark tek negdje na 12:08:30
Dogadaj 7 je isto tako early i zavrsi u 12:08
Dogadaj 8 i 9 su .withLateFirings(AfterCount(2)), ali ovog puta se skupilo count=2 pa se taj event i okinuo. Nemojte zaboraviti da se ova 2 eventa grupiraju i njigova vrijednost se zbraja (.apply(Sum.integersPerKey())
Prema edgaru tocno rjesenje je
(12:06, 12:00-12:02, E, 1)
(12:07, 12:00-12:02, O, 3)
(12:07, 12:02-12:04, E, 5)
(12:08, 12:02-12:04, E, 10)
(12:08, 12:04-12:06, E, 7)
(12:09, 12:04-12:06, L, 17)
reygrep
anon00 oprosti nikako ne mogu skuziti koja je razlika izmedu (1 i 3) i (4 i 6) eventa?
zasto se 1 gleda kao early, a 3 kao on time, a nisu kao slucaj (4 i 6) gdje su oba early i zbrajaju se?
Ista stvar me muci kod 5 i 6 zasto ih nismo mogli grupirat
MrDREDD
Koja je razlika kada piše AfterCount/AtCount ?
anon00
MrDREDD
class AfterCount(TriggerFn):
"""Fire when there are at least count elements in this window pane.
A taj AtCount uopce ne mogu pronaci u dokumentaciji - moja pretpostavka bi bila nakon svakog elementa - emit
https://beam.apache.org/releases/pydoc/2.35.0/apache_beam.transforms.trigger.html
sekiro
anon00 znaci ako ih ima i vise od jedan se zbroje pa emitaju zajedno?
anon00
sekiro da
TamTam
Moze netko staviti rj prvog zadatka iz ispita?
niknik
foobar Kad predas ispit imas review i rjesenja, a i netko je vec uploadao ta rjesenja.
anon00
Je li se netko mozda potrudio skupiti i odgovoriti na pitalice, a da je voljan poslati u PM ili cak tu objaviti?
Bisolvon
anon00 Koje pitalice?
I3loodHound
anon00
Imas na materijalima pitanja iz prezentacija: https://github.com/studosi-fer/NMIBP/blob/master/vjezba/NMIBP_vjezba_pitanja-i-odgovori-s-prezentacija.pdf
I3loodHound My bad, ima vec u sluzbenom
anon00
Bisolvon Teoretska pitanja s edgara i sa starih ispita
I3loodHound
Zna netko dal smijemo imati neki cheet sheet za SPARQL po naliku na onaj za SQL?
Bisolvon
I3loodHound Imas “SPARQL query syntax” na sluzbenom pod.