PySpark v Azure Databricks
Azure Databricks je založený na Apache Sparku, což je jednotný analytický modul pro velké objemy dat a strojové učení. PySpark vám pomůže s apache Sparkem s využitím programovacího jazyka Python, což je flexibilní jazyk, který se snadno učí, implementuje a udržuje. Nabízí také řadu možností pro vizualizaci dat v Databricks. PySpark kombinuje výkon Pythonu a Apache Sparku.
Tento článek obsahuje přehled základů PySparku v Databricks.
Úvod do konceptů Sparku
Než začnete používat PySpark, je důležité pochopit klíčové koncepty Apache Sparku.
Datové rámce
Datové rámce jsou primárními objekty v Apache Sparku. Datový rámec je datová sada uspořádaná do pojmenovaných sloupců. Datový rámec si můžete představit jako tabulku nebo tabulku SQL, dvourozměrnou datovou strukturu označenou řadou záznamů (podobně jako řádky v tabulce) a sloupce různých typů. Datové rámce poskytují bohatou sadu funkcí (například výběr sloupců, filtrování, spojení a agregace), které umožňují efektivně provádět běžné úlohy manipulace s daty a analýzy.
Mezi důležité prvky datového rámce patří:
- Schéma: Schéma definuje názvy sloupců a typy datového rámce. Formáty dat mají různé sémantiky pro definici a vynucení schématu. Některé zdroje dat poskytují informace o schématu, zatímco jiné buď spoléhají na ruční definici schématu, nebo umožňují odvozování schématu. Uživatelé mohou definovat schémata ručně nebo schémata lze číst ze zdroje dat.
- Řádky: Spark představuje záznamy v datovém rámci jako
Row
objekty. I když podkladové formáty dat, jako je Delta Lake, používají k ukládání dat sloupce, pro optimalizaci mezipaměti Sparku a prohazování dat pomocí řádků. - Sloupce: Sloupce ve Sparku jsou podobné sloupcům v tabulce a mohou představovat jednoduchý typ, například řetězec nebo celé číslo, ale také složité typy, jako je matice, mapa nebo null. Můžete psát dotazy, které vyberou, manipulují nebo odebírat sloupce ze zdroje dat. Mezi možné zdroje dat patří tabulky, zobrazení, soubory nebo jiné datové rámce. Sloupce se nikdy neodeberou z datové sady nebo datového rámce, ale ve výsledcích se vynechávají prostřednictvím
.drop
transformací nebo vynechání vselect
příkazech.
Zpracování dat
Apache Spark používá opožděné vyhodnocení ke zpracování transformací a akcí definovaných pomocí datových rámců. Tyto koncepty jsou zásadní pro pochopení zpracování dat pomocí Sparku.
Transformace: Logika expresního zpracování ve Sparku jako transformace, což jsou pokyny pro načítání a manipulaci s daty pomocí datových rámců. Mezi běžné transformace patří čtení dat, spojení, agregace a přetypování typů. Informace o transformacích v Azure Databricks najdete v tématu Transformace dat.
Opožděné vyhodnocení: Spark optimalizuje zpracování dat tím, že identifikuje nejúčinnější fyzický plán pro vyhodnocení logiky určené transformacemi. Spark ale nebude reagovat na transformace, dokud se nebudou volat akce. Místo vyhodnocení jednotlivých transformací v přesném pořadí, které je zadané, Spark počká, dokud akce neaktivuje výpočet u všech transformací. To se označuje jako opožděné vyhodnocení nebo opožděné načítání, které umožňuje zřetězovat více operací, protože Spark zpracovává jejich provádění odloženým způsobem, a ne jejich okamžité spuštění při jejich definování.
Poznámka:
Opožděné vyhodnocení znamená, že datové rámce ukládají logické dotazy jako sadu instrukcí vůči zdroji dat místo výsledku v paměti. To se výrazně liší od dychtivého spuštění, což je model používaný datovými rámci pandas.
Akce: Akce dávají Sparku pokyn, aby počítaly výsledek z řady transformací na jednom nebo více datových rámcích. Operace akcí vrací hodnotu a můžou být následující:
- Akce pro výstup dat v konzole nebo v editoru, například
display
neboshow
- Akce pro shromažďování dat (vrací
Row
objekty), napříkladtake(n)
, afirst
nebohead
- Akce zápisu do zdrojů dat, například
saveAsTable
- Agregace, které aktivují výpočet, například
count
Důležité
Vprodukčních Všechny ostatní akce přeruší optimalizaci dotazů a můžou vést k kritickým bodům.
Co znamená, že datové rámce jsou neměnné?
Datové rámce jsou kolekce transformací a akcí definovaných pro jeden nebo více zdrojů dat, ale nakonec Apache Spark přeloží dotazy zpět na původní zdroje dat, takže samotná data se nezmění a nezmění se žádné datové rámce. Jinými slovy, datové rámce jsou neměnné. Z tohoto důvodu se po provedení transformací vrátí nový datový rámec, který se musí uložit do proměnné, aby k němu bylo možné přistupovat v následných operacích. Pokud chcete vyhodnotit přechodný krok transformace, zavolejte akci.
Rozhraní API a knihovny
Stejně jako u všech rozhraní API pro Spark je PySpark vybaven mnoha rozhraními API a knihovnami, které umožňují a podporují výkonné funkce, včetně:
- Zpracování strukturovaných dat s relačními dotazy pomocí Spark SQL a datových rámců Spark SQL umožňuje kombinovat dotazy SQL s programy Sparku. Pomocí datových rámců Sparku můžete efektivně číst, zapisovat, transformovat a analyzovat data pomocí Pythonu a SQL, což znamená, že vždy využíváte plnou sílu Sparku. Viz Začínáme s PySparkem.
- Škálovatelné zpracování datových proudů se strukturovaným streamováním Výpočet streamování můžete vyjádřit stejným způsobem, jako byste vyjádřili dávkový výpočet statických dat a modul Spark SQL ho spouští postupně a nepřetržitě, protože streamovaná data nadále přicházejí. Viz Přehled strukturovaného streamování.
- Datové struktury Pandas a nástroje pro analýzu dat, které pracují na Apache Sparku s rozhraním Pandas API ve Sparku. Rozhraní Pandas API ve Sparku umožňuje škálovat úlohy pandas na libovolnou velikost tím, že ji spustíte napříč několika uzly a s jedním základem kódu, který funguje s knihovnou pandas (testy, menší datové sady) a se Sparkem (produkční, distribuované datové sady). Přehled rozhraní API Pandas ve Sparku
- Algoritmy strojového učení se službou Machine Learning (MLLib) MLlib je škálovatelná knihovna strojového učení založená na Sparku, která poskytuje jednotnou sadu rozhraní API, která uživatelům pomáhají vytvářet a ladit praktické kanály strojového učení. Viz Přehled knihovny strojového učení.
- Grafy a výpočty grafů a paralelních výpočtů pomocí GraphX GraphX zavádí nový směrovaný multigraf s vlastnostmi připojenými ke každému vrcholu a okraji a zpřístupňuje operátory výpočtů grafů, algoritmy a tvůrce pro zjednodušení úloh analýzy grafů. Viz Přehled GraphXu.
Kurzy Sparku
Příklady použití PySpark pro Databricks najdete v následujících článcích:
Dokumentace k Apache Sparku obsahuje také rychlé starty a příručky pro výuku Sparku, včetně následujících:
- Rychlý start k datovým rámcům PySpark
- Začínáme se SparkEM SQL
- Průvodce programováním strukturovaného streamování
- Rychlé zprovoznění rozhraní API Pandas ve Sparku
- Průvodce programováním v knihovně Machine Learning
Referenční informace k PySpark
Azure Databricks udržuje svou vlastní verzi rozhraní API PySpark a odpovídající referenční informace, které najdete v těchto částech: