Rések a Spark-feladatok között
Így a feladatok ütemtervében az alábbihoz hasonló rések láthatók:
Ennek több oka is lehet. Ha a rések a számítási feladatra fordított idő nagy részét teszik ki, ki kell derítenie, hogy mi okozza ezeket a réseket, és hogy ez várható-e. Van néhány dolog, ami történhet a rések során:
- Nincs mit tenni
- Az illesztőprogram összetett végrehajtási tervet készít
- Nem spark-kód végrehajtása
- Az illesztőprogram túlterhelt
- A fürt hibásan működik
Nincs munka
A teljes körű számítás esetében a rések legvalószínűbb magyarázata, hogy nincs teendője. Mivel a fürt fut, és a felhasználók lekérdezéseket küldenek, rések várhatók. Ezek a hiányosságok a lekérdezésbeküldések közötti idő.
Összetett végrehajtási terv
Ha például hurkot használ withColumn()
, az egy nagyon költséges tervet hoz létre a feldolgozáshoz. A hiányosságok lehetnek az az idő, amikor a vezető csak a terv elkészítésével és feldolgozásával tölt. Ha ez a helyzet, próbálja egyszerűsíteni a kódot. Több withColumn()
hívás egyetlen kifejezéssé való összevonására vagy a kód SQL-vé alakítására használhatóselectExpr()
. Továbbra is beágyazhatja az SQL-t a Python-kódba, a Python használatával pedig sztringfüggvényekkel módosíthatja a lekérdezést. Ez gyakran megoldja az ilyen típusú problémát.
Nem Spark-kód végrehajtása
A Spark-kód vagy SQL-ben van megírva, vagy egy Spark API-val, például a PySparkkal. A nem Spark-kódvégrehajtások hézagként jelennek meg az ütemtervben. Létrehozhat például egy hurkot a Pythonban, amely natív Python-függvényeket hív meg. Ez a kód nem fut a Sparkban, és résként jelenhet meg az ütemtervben. Ha nem biztos abban, hogy a kód a Sparkot futtatja, próbálja meg interaktívan futtatni egy jegyzetfüzetben. Ha a kód a Sparkot használja, a Spark-feladatok a cella alatt jelennek meg:
A Spark-feladatok legördülő menüt a cella alatt is kibonthatja, így ellenőrizheti, hogy a feladatok aktívan futnak-e (abban az esetben, ha a Spark tétlen). Ha nem a Sparkot használja, nem fogja látni a Spark-feladatokat a cella alatt, vagy azt fogja látni, hogy egyik sem aktív. Ha nem tudja interaktívan futtatni a kódot, megpróbálhatja bejelentkezni a kódba, és megnézheti, hogy megfelel-e a réseknek a kód szakaszaival időbélyeggel, de ez bonyolult lehet.
Ha nem Spark-kód futtatása miatt hiányosságokat lát az ütemtervben, az azt jelenti, hogy a dolgozók tétlenek, és valószínűleg pénzt pazarolnak a rések során. Lehet, hogy ez szándékos és elkerülhetetlen, de ha meg tudja írni ezt a kódot a Spark használatára, akkor teljes mértékben használni fogja a fürtöt. Kezdje ezzel az oktatóanyaggal, amelyből megtudhatja, hogyan használható a Spark.
Az illesztőprogram túlterhelt
Annak megállapításához, hogy az illesztőprogram túlterhelt-e, meg kell vizsgálnia a fürt metrikáit.
Ha a fürt a DBR 13.0-s vagy újabb verziójában van, kattintson a Képernyőképen kiemelt Metrikák elemre:
Figyelje meg a kiszolgáló terheléselosztási vizualizációt. Meg kell vizsgálnia, hogy az illesztőprogram nagy terhelést mutat-e. Ez a vizualizáció színblokkot tartalmaz a fürt minden egyes gépéhez. A piros azt jelenti, hogy erősen betöltött, a kék pedig azt jelenti, hogy egyáltalán nem töltődik be.
Az előző képernyőképen egy alapvetően tétlen fürt látható. Ha az illesztőprogram túlterhelt, az a következőképpen nézne ki:
Láthatjuk, hogy az egyik négyzet piros, míg a többi kék. Vigye az egérmutatót a piros négyzet fölé, és győződjön meg arról, hogy a piros blokk az illesztőprogramot jelöli.
A túlterhelt illesztőprogramok kijavításához lásd : Spark-illesztőprogram túlterhelt.
Disztribúció megtekintése örökölt Ganglia-metrikákkal
Ha a fürt a DBR 12.x vagy korábbi verzióján van, kattintson a Metrikák elemre, és a Ganglia felhasználói felületére a képernyőképen kiemelt módon:
Ha a fürt már nem fut, megnyithatja az előzmény pillanatképek egyikét. Tekintse meg a kiszolgálói terheléselosztás vizualizációt, amely piros színnel van kiemelve:
Meg kell vizsgálnia, hogy az illesztőprogram nagy terhelést mutat-e. Ez a vizualizáció színblokkot tartalmaz a fürt minden egyes gépéhez. A piros azt jelenti, hogy erősen betöltött, a kék pedig azt jelenti, hogy egyáltalán nem töltődik be. A fenti eloszlás egy alapvetően tétlen fürtöt mutat. Ha az illesztőprogram túlterhelt, az a következőképpen nézne ki:
Láthatjuk, hogy az egyik négyzet piros, míg a többi kék. Legyen óvatos, ha csak egy feldolgozója van. Győződjön meg arról, hogy a piros blokk az illesztőprogram, nem pedig a feldolgozó.
A túlterhelt illesztőprogramok kijavításához lásd : Spark-illesztőprogram túlterhelt.
A fürt hibásan működik
A hibás fürtök ritkák, de ha ez a helyzet, nehéz lehet megállapítani, hogy mi történt. Lehet, hogy csak újra szeretné indítani a fürtöt, hogy lássa, ez megoldja-e a problémát. A naplókban azt is megnézheti, hogy van-e gyanús dolog. Az alábbi képernyőképen kiemelt Eseménynapló lap és Illesztőprogram-naplók lap a következő helyeken tekinthető meg:
Előfordulhat, hogy engedélyezni szeretné a fürtnaplók kézbesítését a feldolgozók naplóinak eléréséhez. A naplószintet is módosíthatja, de előfordulhat, hogy segítségre van szüksége a Databricks-fiók csapatához.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: