Kezdőoldal » Számítástechnika » Programozás » Hogyan tudnám ezt a hibát...

Hogyan tudnám ezt a hibát megtalálni, ha localba nem jön elő?

Figyelt kérdés

Most kicsit meg vagyok lőve, mert gyakornok vagyok, és mindkét mentorom szabin van a héten. Röviden annyi a probléma, hogy van egy kód(scalaban írva), amit ha a céges környezetben lefuttatok, több száz millió sornyi adattal, akkor hibára fut. Viszont ha ugyan ezt a kódot lefuttatom localba, IDE-n belül, unit tesztekkel, dummy adattal vagy csak az eredeti adat egy részével, akkor hiba nélkül lefut. Nem tudom, hogy hogyan tudnám reprodukálni a hibát.


Az egész adatot nem tudom localba lehúzni, mert bazi nagy. A céges környezetbe(clusterekbe) nem tudok belenyúlni, csak futtatni, így ott nem tudok debuggolni. Megnéztem az adatot, nincsen benne hiba vagy outlier, olyanok a a statisztikái mint az összes más hasonló adathalmaznak.



júl. 30. 11:28
 1/7 A kérdező kommentje:
A félreértések végett, elnézést, rosszul fogalmaztam. A hibára futott kifejezést alkalmaztam, de hagyományos hibát nem dob, hanem pont az a baj, hogy helyesen lefut, de hibás eredményekkel, hiba nélkül. Míg localba pedig jó eredményekkel. Elnézést, kicsit kavartam a kifejezéseket.
júl. 30. 11:32
 2/7 anonim ***** válasza:
Verziók egyeznek? Parancssori argumentumok? Környezet?
júl. 30. 12:20
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:
Mármint hogy a környezet egyezik-e élesben meg localban
júl. 30. 12:20
Hasznos számodra ez a válasz?
 4/7 anonim ***** válasza:
Nagy adathalmazon lehet alul/túlcsordulás és nem mindegy a lebegőpontos számok összeadási sorrendje sem. Plusz még arra tudok gondolni, hogy egyes mezőkben null-ok vannak, negatív számok, vagy szűrésbe bekerülő, vagy onnan kieső sorok. (Bár ezt elvileg az outlierekkel kiszűrted)
júl. 30. 12:51
Hasznos számodra ez a válasz?
 5/7 A kérdező kommentje:

Szűrés csak a végeredmény kiszámolása után van, úgyhogy az kilőve. Viszont van egy pár transzformáció/skálázás az adatokon. Lehet, hogy emiatt lenne más az eredmény, hogy a transzformációk alatt/után rengeteg lebegőpontos szám lesz összeadva? Az eltérés amúgy sok helyen jelentős: 0 és 1 közötti számok a végeredmények, és valahol 3-4 tizedes eltérés is van az elvárthoz képest.


A nullok kivannak szűrve, negatívok meg elvileg nem fordulhatnak elő. Illetve alul/túlcsordulás alatt mit értesz pontosan?

júl. 30. 13:32
 6/7 anonim ***** válasza:

5

Alul/túlcsordulás integereknél van, ahol ugyebár van egy max érték, ami lehet benne, ha ezen túl lépsz összeadásokkal, akkor kezdi a legkisebb számtól.

pl. 8 bites unsigned-nál, ha 255-ön vagy, hozzáadsz 1-et, akkor 0 lesz az eredmény

Ha lebegőpontosat használtok, ott ilyen nincs, viszont minél nagyobb számokat használtok, annál pontatlanabb lesz. De ez eleve nem 100% pontos, főleg a float. Illetve ha először nagyon nagy szám lesz, majd utána normalizáljátok, akkor simán előjöhetnek nagyobb pontatlanságok

júl. 30. 13:47
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:

#5 - Igen, lehet amiatt. Próbáld meg úgy, hogy összeadás előtt rendezed az adatokat lebegőpontosokra növekvő sorrendben. Így is lesz pontatlanság, de kisebb mértékű.


Alul és túlcsordulás van lebegőpontos műveleteknél is, csak ritkábban kerül elő, mert többnyire másképp és másra használjuk őket. Ettől független van min/max értékük, és ha azon túl akarsz hozzáadni vagy kivonni, akkor alul vagy túl fog csordulni. (Ha szerencséd van, akkor nem csak csendben túlcsordul, hanem kapsz valamilyen aritmetikai kivételt)

júl. 30. 15:31
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!