PySpark Dataframe-zelfstudie - PySpark-programmering met dataframes



In deze PySpark Dataframe-zelfstudieblog leert u met meerdere voorbeelden over transformaties en acties in Apache Spark.

Dataframes is tegenwoordig een modewoord in de industrie. Mensen gebruiken het meestal met populaire talen die worden gebruikt voor gegevensanalyse, zoals Python, Scala en R.Plus, met de duidelijke noodzaak om complexe analyse- en munging-taken uit te voeren voor Big Data, Python voor Spark of is tegenwoordig een van de meest gewilde vaardigheden in de branche geworden.Dus waarom gebruikt iedereen het zo vaak? Laten we dit begrijpen met onze PySpark Dataframe-zelfstudie blog. In deze blog behandel ik de volgende onderwerpen:





PySpark Dataframe-zelfstudie: Wat zijn dataframes?

Dataframes verwijst doorgaans naar een datastructuur, die in tabelvorm van aard is. Het vertegenwoordigt rijen, die elk uit een aantal observaties bestaan. Rijen kunnen verschillende gegevensindelingen hebben ( Heterogeen ), terwijl een kolom gegevens van hetzelfde gegevenstype kan bevatten ( Homogeen ). Dataframes bevatten meestal enkele metagegevens naast gegevens, bijvoorbeeld kolom- en rijnamen.

Dataframe-Pyspark-Dataframe-Tutorial



We kunnen zeggen dat dataframes niets anders zijn dan een tweedimensionale gegevensstructuur, vergelijkbaar met een SQL-tabel of een spreadsheet. Laten we nu verder gaan met deze PySpark Dataframe-zelfstudie en begrijpen waarom we Pyspark Dataframe precies nodig hebben?

Waarom hebben we Dataframes nodig?

1. verwerking van gestructureerde en semi-gestructureerde gegevens



Dataframeszijn ontworpen om te verwerkennaar groot verzameling van zowel gestructureerde als semi-gestructureerde gegevens . Observaties in Spark DataFrame zijn georganiseerd onder benoemde kolommen, waardoor Apache Spark het schema van een DataFrame begrijpt. Dit helpt Spark om het uitvoeringsplan voor deze query's te optimaliseren. Het kan ook aan Petabytes Van de gegevens.

2.S licentiëren en in blokjes snijden

Dataframe API's ondersteunt meestal uitgebreide methoden voor snijden en in blokjes snijden de data. Het bevatoperatiens zoals het 'selecteren' van rijen, kolommen en cellen op naam of op nummer, het uitfilteren van rijen, enz. Statistische gegevens zijn meestal erg rommelig en bevatten veel ontbrekende en verkeerde waarden en bereikoverschrijdingen. Een kritisch belangrijk kenmerk van dataframes is dus het expliciete beheer van ontbrekende gegevens.

3. gegevensbronnen

DataFrame ondersteunt een breed scala aan gegevensindelingen en bronnen, we zullen hier later in deze Pyspark Dataframe Tutorial-blog op ingaan. Ze kunnen gegevens uit verschillende bronnen opnemen.

4. ondersteuning voor meerdere talen

Het heeft API-ondersteuning voor verschillende talen zoals Python, R, Scala, Java,waardoor het gemakkelijker te gebruiken is door mensen met verschillende programmeerachtergronden.

Abonneer je op ons YouTube-kanaal om nieuwe updates te ontvangen ..!

Kenmerken van Dataframes

  • Dataframes zijn Verdeeld in Nature, waardoor het fouttolerante en zeer beschikbare gegevensstructuur is.
  • Luie evaluatie is een evaluatiestrategie die de evaluatie van een uitdrukking vasthoudt totdat de waarde ervan nodig is. Het vermijdt herhaalde evaluatie. Luie evaluatie in Spark betekent dat de uitvoering pas start als een actie wordt geactiveerd. In Spark ontstaat het beeld van luie evaluatie wanneer Spark-transformaties plaatsvinden.
  • Dataframes zijn Onveranderlijk in de natuur. Met onveranderlijk bedoel ik dat het een object is waarvan de staat kan niet worden gewijzigd nadat het is gemaakt.Maar we kunnen transformerenhaarwaarden door toe te passeneen zekeretransformatie, zoals in RDD's.

PySpark Dataframe-bronnen

Dataframes in Pyspark kunnen op verschillende manieren worden gemaakt:

Gegevens kunnen worden geladen via een CSV, JSON, XML of een parketvijl. Het kan ook worden gemaakt met een bestaand RDD en via elke andere database, zoals Bijenkorf of Cassandra ook. Het kan ook gegevens van HDFS of het lokale bestandssysteem opnemen.

Dataframe maken

Laten we verder gaan met deze PySpark Dataframe Tutorial-blog en begrijpen hoe u Dataframes kunt maken.

We maken instanties voor medewerkers en afdelingen.

van pyspark.sql import * Werknemer = Rij ('voornaam', 'achternaam', 'e-mail', 'salaris') werknemer1 = Werknemer ('Basher', 'armbrust', 'bash@edureka.co', 100000) werknemer2 = Medewerker ('Daniel', 'meng', 'daniel@stanford.edu', 120000) medewerker3 = Medewerker ('Muriel', Geen, 'muriel@waterloo.edu', 140000) medewerker4 = Medewerker ('Rachel', 'wendell ',' rach_3@edureka.co ', 160000) medewerker5 = Medewerker (' Zach ',' galifianakis ',' zach_g@edureka.co ', 160000) print (Medewerker [0]) print (medewerker3) afdeling1 = Rij (id = '123456', naam = 'HR') afdeling2 = Rij (id = '789012', naam = 'OPS') afdeling3 = Rij (id = '345678', naam = 'FN') afdeling4 = Rij (id = ' 901234 ', naam =' DEV ')

Vervolgens maken we een DepartmentWithEmployees-instantie van de medewerker en afdelingen

departmentWithEmployees1 = Rij (afdeling = afdeling1, medewerkers = [medewerker1, medewerker2, medewerker5]) departmentWithEmployees2 = Rij (afdeling = afdeling2, medewerkers = [medewerker3, medewerker4]) departmentWithEmployees3 = Rij (afdeling = afdeling3, medewerkers = [medewerker1, medewerker4, medewerker3 ]) departmentWithEmployees4 = Rij (afdeling = afdeling4, medewerkers = [medewerker2, medewerker3])

Laten we ons dataframe maken op basis van de lijst met rijen

departmentWithEmployees_Seq = [departmentWithEmployees1, departmentWithEmployees2] dframe = spark.createDataFrame (departmentWithEmployees_Seq) display (dframe) dframe.show ()

Pyspark Dataframes Voorbeeld 1: FIFA Wereldbeker Dataset

Hier hebben we de FIFA World Cup Players Dataset genomen. We gaan deze gegevens laden in CSV-indelingin eendataframe en vervolgens leren we over de verschillende transformaties en acties die op dit dataframe kunnen worden uitgevoerd.

Gegevens lezen uit CSV-bestand

Laten we de gegevens uit een CSV-bestand laden. Hier gaan we de spark.read.csv methode om de gegevens in een dataframe fifa_df te laden. De eigenlijke methode is spark.read.format [csv / json] .

fifa_df = spark.read.csv ('path-of-file / fifa_players.csv', inferSchema = True, header = True) fifa_df.show ()

Schema van Dataframe

Om het schema te bekijken, dwz. de structuur van het dataframe, gebruiken we de printSchema methode. Dit geeft ons de verschillende kolommen in ons dataframe, samen met het gegevenstype en de nulbare voorwaarden voor die specifieke kolom.

fifa_df.printSchema ()

Kolomnamen en aantal (rijen en kolommen)

Als we de namen en het aantal rijen en kolommen van een bepaald dataframe willen bekijken, gebruiken we de volgende methoden.

fifa_df.columns // Column Names fifa_df.count () // Row Count len ​​(fifa_df.columns) // Column Count

37784 8

Een specifieke kolom beschrijven

Als we de samenvatting van een bepaalde kolom van een dataframe willen bekijken, gebruiken we de beschrijft methode. Deze methode geeft ons de statistische samenvatting van de gegeven kolom, indien niet gespecificeerd, levert het de statistische samenvatting van het dataframe.

android studio stap voor stap
fifa_df.describe ('Naam coach'). show () fifa_df.describe ('Positie'). show ()

Meerdere kolommen selecteren

Als we bepaalde kolommen uit het dataframe willen selecteren, gebruiken we de selecteer methode.

fifa_df.select ('Player Name', 'Coach Name'). show ()

Verschillende verschillende kolommen selecteren

fifa_df.select ('Player Name', 'Coach Name'). distinct (). show ()

Gegevens filteren

Om de gegevens te filteren volgens de opgegeven voorwaarde, gebruiken we de filter opdracht. Hier filteren we ons dataframe op basis van de voorwaarde dat Match ID gelijk moet zijn aan 1096 en dan berekenen we hoeveel records / rijen er zijn in de gefilterde output.

fifa_df.filter (fifa_df.MatchID == '1096'). show () fifa_df.filter (fifa_df.MatchID == '1096'). count () // om de telling te krijgen

Gegevens filteren (meerdere parameters)

We kunnen onze gegevens filteren op basis van meerdere voorwaarden (EN of OF)

fifa_df.filter ((fifa_df.Position == 'C') && (fifa_df.Event == 'G40' ')). show ()

Gegevens sorteren (OrderBy)

Om de gegevens te sorteren gebruiken we de OrderBy methode. Standaard wordt het in oplopende volgorde gesorteerd, maar we kunnen het ook in aflopende volgorde wijzigen.

fifa_df.orderBy (fifa_df.MatchID) .show ()

PySpark Dataframes Voorbeeld 2: Superheros Dataset

Laden van de gegevens

Hier zullen we de gegevens op dezelfde manier laden als eerder.

Superhero_df = spark.read.csv ('pad-van bestand / superheros.csv', inferSchema = True, header = True) Superhero_df.show (10)

De gegevens filteren

Superhero_df.filter (Superhero_df.Gender == 'Man'). Count () // Man Heros Count Superhero_df.filter (Superhero_df.Gender == 'Vrouw'). Count () // Vrouwelijke Heros Count

De gegevens groeperen

GroupBy wordt gebruikt om het dataframe te groeperen op basis van de opgegeven kolom. Hier groeperen we het dataframe op basis van de kolom Race en vervolgens met de tellen functie, kunnen we de telling van de specifieke race vinden.

Race_df = Superhero_df.groupby ('Race') .count () .show ()

SQL-query's uitvoeren

We kunnen SQL-queries ook rechtstreeks doorgeven aan elk dataframe, daarvoor moeten we een tabel maken vanuit het dataframe met behulp van de registerTempTable methode en gebruik vervolgens de sqlContext.sql () om de SQL-query's door te geven.

Superhero_df.registerTempTable ('superhero_table') sqlContext.sql ('select * from superhero_table'). Show ()

sqlContext.sql ('selecteer onderscheidend (Eye_color) van superhero_table'). show ()

sqlContext.sql ('selecteer onderscheidend (Eye_color) van superhero_table'). count ()

2. 3

sqlContext.sql ('selecteer max (gewicht) van superhero_table'). show ()

En hiermee komen we aan het einde van deze PySpark Dataframe-zelfstudie.

Dus dit is het, jongens!

Ik hoop dat jullie een idee hebben gekregen van wat PySpark Dataframe is, waarom het wordt gebruikt in de industrie en de functies ervan in deze PySpark Dataframe Tutorial Blog. Gefeliciteerd, u bent niet langer een nieuweling van dataframes. Als je meer wilt weten over PySpark en de verschillende gebruiksscenario's in de industrie wilt begrijpen, bekijk dan onze Vonk met Python en PySpark-zelfstudie Blog.