Megosztás a következőn keresztül:


PySpark az Azure Databricksben

Az Azure Databricks az Apache Sparkra, a big data és a gépi tanulás egységes elemzési motorjára épül. A PySpark segítségével a Python programozási nyelv használatával kommunikálhat az Apache Sparkkal, amely egy könnyen elsajátítható, implementálható és karbantartható, rugalmas nyelv. Emellett számos lehetőséget kínál az adatvizualizációra a Databricksben. A PySpark egyesíti a Python és az Apache Spark erejét.

Ez a cikk áttekintést nyújt a PySpark alapjairól a Databricksen.

Bevezetés a Spark-fogalmakba

A PySpark használata előtt fontos megérteni az Apache Spark legfontosabb fogalmait.

Adatkeretek

Az Apache Spark elsődleges objektumai a DataFrame-ek. A DataFrame egy elnevezett oszlopokba rendezett adathalmaz. A DataFrame-et úgy tekintheti, mint egy számolótábla vagy egy SQL-tábla, egy rekordsorozat kétdimenziós címkével ellátott adatstruktúrája (hasonló a táblázat soraihoz) és a különböző típusú oszlopokhoz. A DataFrame-ek függvények gazdag készletét biztosítják (például oszlopokat jelölnek ki, szűrnek, illesztenek és összesítenek), amelyek lehetővé teszik a gyakori adatmanipulációs és elemzési feladatok hatékony végrehajtását.

Néhány fontos DataFrame-elem:

  • Séma: A séma határozza meg a DataFrame oszlopneveit és típusait. Az adatformátumok különböző szemantikával rendelkeznek a sémadefinícióhoz és a kényszerítéshez. Egyes adatforrások sémainformációkat nyújtanak, míg mások manuális sémadefinícióra támaszkodnak, vagy lehetővé teszik a séma következtetését. A felhasználók manuálisan definiálhatnak sémákat, vagy a sémák olvashatók egy adatforrásból.
  • Sorok: A Spark objektumként Row jelöli a DataFrame rekordjait. Amíg az olyan mögöttes adatformátumok, mint a Delta Lake, oszlopokat használnak az adatok tárolására, addig a Spark az optimizálás érdekében sorokat használva gyorsítótárazza és rendezi át az adatokat.
  • Oszlopok: A Spark oszlopai hasonlóak a számolótáblák oszlopaihoz, és egy egyszerű típust, például sztringet vagy egész számot jelölhetnek, de olyan összetett típusokat is, mint a tömb, a térkép vagy a null. Olyan lekérdezéseket írhat, amelyek oszlopokat jelölnek ki, módosítanak vagy eltávolítanak egy adatforrásból. Lehetséges adatforrások lehetnek táblák, nézetek, fájlok vagy más Adatkeretek. Az oszlopok soha nincsenek eltávolítva egy adathalmazból vagy DataFrame-ből; csak az eredményekből maradnak ki .drop átalakítások vagy select utasítások kihagyása révén.

Adatfeldolgozás

Az Apache Spark lusta kiértékeléssel dolgozza fel a DataFrame-ekkel definiált átalakításokat és műveleteket. Ezek a fogalmak alapvető fontosságúak a Sparkkal végzett adatfeldolgozás megértéséhez.

Átalakítások: A Sparkban a feldolgozási logikát transzformációkként fejezi ki, amelyek az adatok DataFrame-ekkel való betöltésére és manipulálására szolgálnak. A gyakori átalakítások közé tartozik az adatok olvasása, az illesztések, az összesítések és a típus-öntés. Az Azure Databricksben végzett átalakításokról további információt az Adatok átalakítása című témakörben talál.

Lusta kiértékelés: A Spark optimalizálja az adatfeldolgozást a leghatékonyabb fizikai terv azonosításával az átalakítások által meghatározott logika kiértékeléséhez. A Spark azonban csak a műveletek meghívása után hajtja végre az átalakításokat. Ahelyett, hogy az egyes átalakításokat a megadott sorrendben értékelte, a Spark megvárja, amíg egy művelet számítást indít el az összes átalakításon. Ezt lusta kiértékelésnek vagy lusta betöltésnek nevezzük, amely lehetővé teszi, hogy több műveletet is láncoljon, mivel a Spark késleltetett módon kezeli a végrehajtásukat ahelyett, hogy a definiálásukkor azonnal végrehajtanák őket.

Feljegyzés

A lusta kiértékelés azt jelenti, hogy a DataFrames a logikai lekérdezéseket utasításkészletként tárolja egy adatforráshoz, nem pedig egy memóriabeli eredményhez. Ez jelentősen eltér a lelkes végrehajtástól, amely a pandas DataFrames által használt modell.

Műveletek: A műveletek arra utasítják a Sparkot, hogy kiszámítsa az egy vagy több DataFrame-en végrehajtott átalakítások eredményét. A műveletműveletek értéket adnak vissza, és az alábbiak bármelyike lehet:

  • A konzolon vagy a szerkesztőben lévő adatok kimenetére irányuló műveletek, például displayshow
  • Adatok gyűjtésére irányuló műveletek (objektumok visszaadásaRow), például take(n), és firsthead
  • Adatforrásba írható műveletek, például saveAsTable
  • Számítást kiváltó összesítések, például count

Fontos

Az éles adatfolyamatokban az adatok írása általában az egyetlen művelet, amelyet meg kell jeleníteni. Minden más művelet megszakítja a lekérdezésoptimalizálást, és szűk keresztmetszetekhez vezethet.

Mit jelent, hogy a DataFrame-ek nem módosíthatók?

A DataFrame-ek olyan átalakítások és műveletek gyűjteményei, amelyek egy vagy több adatforráson vannak definiálva, de végül az Apache Spark feloldja a lekérdezéseket az eredeti adatforrásokra, így maga az adatok nem változnak, és a DataFrame-ek nem változnak. Más szóval a DataFrame-ek nem módosíthatók. Emiatt az átalakítások elvégzése után a rendszer egy új DataFrame-et ad vissza, amelyet egy változóba kell menteni ahhoz, hogy a későbbi műveletekben hozzáférhessen. Ha az átalakítás közbenső lépését szeretné kiértékelni, hívjon meg egy műveletet.

API-k és kódtárak

A Sparkhoz készült összes API-hoz hasonlóan a PySpark is számos API-val és kódtárral rendelkezik, amelyek lehetővé teszik és támogatják a hatékony funkciókat, többek között a következőket:

  • Strukturált adatok feldolgozása relációs lekérdezésekkel a Spark SQL-lel és a DataFrame-ekkel. A Spark SQL lehetővé teszi, hogy SQL-lekérdezéseket keverjen Spark-programokkal. A Spark DataFrames segítségével hatékonyan olvashat, írhat, alakíthat át és elemezhet adatokat Python és SQL használatával, ami azt jelenti, hogy mindig a Spark teljes erejét használja ki. Tekintse meg a PySpark első lépéseit.
  • Streamek méretezhető feldolgozása strukturált streameléssel. A streamelési számításokat ugyanúgy fejezheti ki, mint a statikus adatok kötegelt számításait, és a Spark SQL-motor növekményesen és folyamatosan futtatja azokat, ahogy a streamelési adatok folyamatosan érkeznek. Lásd a strukturált streamelés áttekintését.
  • A Pandas adatstruktúrái és adatelemzési eszközei, amelyek az Apache Sparkon és a Pandas API-n működnek a Sparkon. A Sparkon futó Pandas API lehetővé teszi, hogy a pandas számítási feladatait bármilyen méretre skálázza úgy, hogy több csomóponton futtatja, egyetlen kódbázissal, amely a pandas (tesztek, kisebb adathalmazok) és a Spark (éles, elosztott adatkészletek) használatával működik. Tekintse meg a Pandas API-t a Sparkon – áttekintés.
  • Gépi tanulási algoritmusok a Machine Learning (MLLib) használatával. Az MLlib egy Sparkra épülő skálázható gépi tanulási kódtár, amely egységes API-kat biztosít, amelyek segítenek a felhasználóknak gyakorlati gépi tanulási folyamatok létrehozásában és finomhangolásában. Lásd: Machine Learning Library – Áttekintés.
  • Gráfok és gráf-párhuzamos számítások a GraphX-tal. A GraphX egy új irányított multigráfot vezet be az egyes csúcsokhoz és élekhez csatolt tulajdonságokkal, és gráfszámítási operátorokat, algoritmusokat és szerkesztőket tesz elérhetővé a gráfelemzési feladatok egyszerűsítése érdekében. Lásd a GraphX áttekintését.

Spark-oktatóanyagok

A Databricks-beli PySpark használati példáiért tekintse meg a következő cikkeket:

Az Apache Spark dokumentációja rövid útmutatókat és útmutatókat tartalmaz a Spark megismeréséhez, beleértve a következőket:

PySpark-referencia

Az Azure Databricks fenntartja a PySpark API-k saját verzióját és a megfelelő hivatkozást, amely az alábbi szakaszokban található: