PySpark op Azure Databricks
Azure Databricks is gebouwd op Apache Spark, een geïntegreerde analyse-engine voor big data en machine learning. PySpark helpt u interface met Apache Spark met behulp van de programmeertaal Python. Dit is een flexibele taal die eenvoudig te leren, te implementeren en te onderhouden is. Het biedt ook veel opties voor gegevensvisualisatie in Databricks. PySpark combineert de kracht van Python en Apache Spark.
Dit artikel bevat een overzicht van de basisprincipes van PySpark op Databricks.
Inleiding tot Spark-concepten
Het is belangrijk om belangrijke Apache Spark-concepten te begrijpen voordat u ingaat op het gebruik van PySpark.
DataFrames
DataFrames zijn de primaire objecten in Apache Spark. Een DataFrame is een gegevensset die is ingedeeld in benoemde kolommen. U kunt een DataFrame beschouwen als een spreadsheet of een SQL-tabel, een tweedimensionale gelabelde gegevensstructuur van een reeks records (vergelijkbaar met rijen in een tabel) en kolommen van verschillende typen. DataFrames bieden een uitgebreide set functies (bijvoorbeeld kolommen selecteren, filteren, samenvoegen en aggregeren) waarmee u efficiënt algemene gegevensbewerkingen en analysetaken kunt uitvoeren.
Enkele belangrijke DataFrame-elementen zijn:
- Schema: Een schema definieert de kolomnamen en typen van een DataFrame. Gegevensindelingen hebben verschillende semantiek voor schemadefinitie en afdwinging. Sommige gegevensbronnen bieden schemagegevens, terwijl andere gegevensbronnen afhankelijk zijn van handmatige schemadefinitie of schemadeductie toestaan. Gebruikers kunnen schema's handmatig definiëren of schema's kunnen worden gelezen uit een gegevensbron.
- Rijen: Spark vertegenwoordigt records in een DataFrame als
Row
objecten. Hoewel onderliggende gegevensindelingen, zoals Delta Lake, kolommen gebruiken om gegevens op te slaan, worden spark-caches geoptimaliseerd en worden gegevens in willekeurige volgorde geplaatst met behulp van rijen. - Kolommen: Kolommen in Spark zijn vergelijkbaar met kolommen in een spreadsheet en kunnen een eenvoudig type vertegenwoordigen, zoals een tekenreeks of geheel getal, maar ook complexe typen zoals matrix, kaart of null. U kunt query's schrijven die kolommen selecteren, bewerken of verwijderen uit een gegevensbron. Mogelijke gegevensbronnen zijn tabellen, weergaven, bestanden of andere DataFrames. Kolommen worden nooit verwijderd uit een gegevensset of een DataFrame, ze worden gewoon weggelaten uit resultaten door
.drop
transformaties of weglatingen inselect
instructies.
Gegevensverwerking
Apache Spark maakt gebruik van luie evaluatie om transformaties en acties te verwerken die zijn gedefinieerd met DataFrames. Deze concepten zijn essentieel voor het begrijpen van gegevensverwerking met Spark.
Transformaties: In Spark drukt u verwerkingslogica uit als transformaties. Dit zijn instructies voor het laden en bewerken van gegevens met behulp van DataFrames. Algemene transformaties zijn het lezen van gegevens, joins, aggregaties en typecasting. Zie Gegevens transformeren voor informatie over transformaties in Azure Databricks.
Luie evaluatie: Spark optimaliseert gegevensverwerking door het meest efficiënte fysieke plan te identificeren om logica te evalueren die is opgegeven door transformaties. Spark reageert echter niet op transformaties totdat acties worden aangeroepen. In plaats van elke transformatie te evalueren in de exacte volgorde die is opgegeven, wacht Spark totdat een actie de berekening van alle transformaties activeert. Dit staat bekend als luie evaluatie of luie belasting, waarmee u meerdere bewerkingen kunt koppelen , omdat Spark hun uitvoering op een uitgestelde manier afhandelt, in plaats van ze onmiddellijk uit te voeren wanneer ze worden gedefinieerd.
Notitie
Luie evaluatie betekent dat DataFrames logische query's opslaat als een reeks instructies voor een gegevensbron in plaats van een in-memory resultaat. Dit varieert drastisch van de gretige uitvoering, het model dat wordt gebruikt door pandas DataFrames.
Acties: Met acties wordt Spark geïnstrueerd om een resultaat te berekenen van een reeks transformaties op een of meer DataFrames. Actiebewerkingen retourneren een waarde en kunnen een van de volgende zijn:
- Acties voor het uitvoeren van gegevens in de console of uw editor, zoals
display
ofshow
- Acties voor het verzamelen van gegevens (retourneert
Row
objecten), zoalstake(n)
, enfirst
ofhead
- Acties voor het schrijven naar gegevensbronnen, zoals
saveAsTable
- Aggregaties die een berekening activeren, zoals
count
Belangrijk
In pijplijnen voor productiegegevens is het schrijven van gegevens doorgaans de enige actie die aanwezig moet zijn. Alle andere acties onderbreken queryoptimalisatie en kunnen leiden tot knelpunten.
Wat betekent het dat DataFrames onveranderbaar zijn?
DataFrames zijn een verzameling transformaties en acties die zijn gedefinieerd voor een of meer gegevensbronnen, maar uiteindelijk worden query's in Apache Spark omgezet in de oorspronkelijke gegevensbronnen, zodat de gegevens zelf niet worden gewijzigd en er geen DataFrames worden gewijzigd. Met andere woorden, DataFrames zijn onveranderbaar. Daarom wordt na het uitvoeren van transformaties een nieuw DataFrame geretourneerd dat moet worden opgeslagen in een variabele om deze in volgende bewerkingen te kunnen openen. Als u een tussenstap van uw transformatie wilt evalueren, roept u een actie aan.
API's en bibliotheken
Net als bij alle API's voor Spark wordt PySpark geleverd met veel API's en bibliotheken die krachtige functionaliteit mogelijk maken en ondersteunen, waaronder:
- Verwerking van gestructureerde gegevens met relationele query's met Spark SQL en DataFrames. Met Spark SQL kunt u SQL-query's combineren met Spark-programma's. Met Spark DataFrames kunt u gegevens efficiënt lezen, schrijven, transformeren en analyseren met behulp van Python en SQL, wat betekent dat u altijd gebruik maakt van de volledige kracht van Spark. Zie Aan de slag met PySpark.
- Schaalbare verwerking van streams met Structured Streaming. U kunt uw streamingberekening op dezelfde manier uitdrukken als bij het uitdrukken van een batchberekening op statische gegevens en de Spark SQL-engine voert deze stapsgewijs en continu uit wanneer streaminggegevens blijven binnenkomen. Zie Overzicht van gestructureerd streamen.
- Pandas-gegevensstructuren en hulpprogramma's voor gegevensanalyse die werken in Apache Spark met Pandas-API in Spark. Met de Pandas-API in Spark kunt u uw pandas-workload naar elke grootte schalen door deze uit te voeren op meerdere knooppunten, met één codebasis die werkt met pandas (tests, kleinere gegevenssets) en met Spark (productie, gedistribueerde gegevenssets). Zie Pandas-API in Spark-overzicht.
- Machine learning-algoritmen met Machine Learning (MLLib). MLlib is een schaalbare machine learning-bibliotheek die is gebouwd op Spark die een uniforme set API's biedt waarmee gebruikers praktische machine learning-pijplijnen kunnen maken en afstemmen. Zie Het overzicht van de Machine Learning-bibliotheek.
- Grafieken en graafparallel berekenen met GraphX. GraphX introduceert een nieuwe gerichte multigraph met eigenschappen die zijn gekoppeld aan elk hoekpunt en elke rand, en biedt graafberekeningsoperators, algoritmen en bouwers om grafiekanalysetaken te vereenvoudigen. Zie GraphX-overzicht.
Spark-zelfstudies
Raadpleeg de volgende artikelen voor PySpark over databricks-gebruiksvoorbeelden:
De Apache Spark-documentatie bevat ook quickstarts en handleidingen voor het leren van Spark, waaronder de volgende:
- Snelstartgids voor PySpark DataFrames
- Aan de slag met Spark SQL
- Programmeerhandleiding voor gestructureerd streamen
- Pandas-API in Spark QuickStart
- Programmeerhandleiding voor Machine Learning-bibliotheken
Referentie voor PySpark
Azure Databricks onderhoudt een eigen versie van de PySpark-API's en de bijbehorende verwijzing. Deze vindt u in deze secties: