Pamācība PySpark Dataframe - PySpark programmēšana ar Dataframe



Šajā PySpark Dataframe apmācības emuārā jūs uzzināsit par Apache Spark pārveidojumiem un darbībām, izmantojot vairākus piemērus.

Datu ietvari mūsdienās ir nozares vārds. Cilvēki mēdz to izmantot ar populārām valodām, kuras izmanto datu analīzei, piemēram, Python, Scala un R.Turklāt ar acīmredzamo nepieciešamību apstrādāt sarežģītas analīzes un pieslēgšanas uzdevumus Big Data, Python for Spark vai ir kļuvusi par vienu no pieprasītākajām prasmēm šajā nozarē mūsdienās.Tātad, kāpēc visi to tik daudz lieto? Sapratīsim to ar mūsu PySpark Dataframe apmācība emuārs. Šajā emuārā es apskatīšu šādas tēmas:





Pamācība PySpark Dataframe: Kas ir Dataframe?

Datu rāmji parasti attiecas uz datu struktūru, kurai ir tabulas raksturs. Tas apzīmē rindas, no kurām katra sastāv no vairākiem novērojumiem. Rindām var būt dažādi datu formāti ( Neviendabīgs ), savukārt kolonnā var būt tāda paša veida dati ( Homogēns ). Datu rāmjos papildus datiem, piemēram, kolonnu un rindu nosaukumiem, parasti ir daži metadati.

Dataframe-Pyspark-Dataframe-Tutorial



Mēs varam teikt, ka Dataframes nav nekas cits kā divdimensiju datu struktūra, līdzīga SQL tabulai vai izklājlapai. Tagad ejam uz priekšu ar šo PySpark Dataframe apmācību un saprotam, kāpēc tieši mums ir nepieciešams Pyspark Dataframe?

Kāpēc mums ir nepieciešami datu ietvari?

1. Strukturēto un daļēji strukturēto datu apstrāde



Datu ietvariir paredzēti apstrādeiuz liels strukturētu, kā arī daļēji strukturētu datu vākšana . Novērojumi programmā Spark DataFrame tiek organizēti zem nosauktajām kolonnām, kas palīdz Apache Spark saprast DataFrame shēmu. Tas palīdz Spark optimizēt izpildes plānu šiem vaicājumiem. Tas var arī tikt galā Petabaiti datu.

2.S licencēšana un kubiņos

Datu rāmis API parasti atbalsta sarežģītas metodes sagriešana un sagriešana dati. Tas iekļaujdarbībaPiemēram, rindu, kolonnu un šūnu “atlase” pēc nosaukuma vai numura, rindu filtrēšana utt. Statistikas dati parasti ir ļoti neskaidri un satur daudz trūkstošu un nepareizu vērtību un diapazona pārkāpumu. Tāpēc kritiski svarīga datu rāmju iezīme ir skaidru trūkstošo datu pārvaldība.

3. Datu avoti

DataFrame atbalsta plašu datu formātu un avotu klāstu, mēs to apskatīsim vēlāk šajā Pyspark Dataframe apmācības emuārā. Viņi var iegūt datus no dažādiem avotiem.

4. Atbalsts vairākām valodām

Tam ir API atbalsts dažādām valodām, piemēram, Python, R, Scala, Java,kas atvieglo to lietošanu cilvēkiem ar dažādu programmēšanas fonu.

Abonējiet mūsu youtube kanālu, lai iegūtu jaunus atjauninājumus ..!

Dataframe iezīmes

  • Datu ietvari ir Izplatīts dabā, kas padara to par kļūdu tolerantu un ļoti pieejamu datu struktūru.
  • Slinks vērtējums ir novērtēšanas stratēģija, kas notur izteiksmes novērtēšanu, līdz tās vērtība ir nepieciešama. Tas ļauj izvairīties no atkārtotas novērtēšanas. Slinks novērtējums Spark nozīmē, ka izpilde netiks sākta, kamēr nav aktivizēta darbība. Sparkā slinka vērtējuma aina nāk, kad notiek Spark transformācijas.
  • Datu ietvari ir Nemaināms dabā. Ar nemainīgu es domāju, ka tas ir objekts, kura stāvoklis nevar modificēt pēc tā izveidošanas.Bet mēs varam pārveidotiesvērtības, piemērojotzināmstransformācija, tāpat kā RDD.

PySpark datu ietvara avoti

Datu kadrus Pyspark var izveidot vairākos veidos:

Datus var ielādēt caur a CSV, JSON, XML vai parketa fails. To var izveidot arī, izmantojot esošu RDD un caur jebkuru citu datu bāzi, piemēram Stropu vai Kasandra arī. Tas var arī uzņemt datus no HDFS vai vietējās failu sistēmas.

Datu rāmja izveide

Pārejam uz priekšu ar šo PySpark Dataframe Tutorial emuāru un sapratīsim, kā izveidot Dataframe.

Mēs izveidosim darbinieku un nodaļu gadījumus.

from pyspark.sql import * Employee = Row ('firstName', 'lastName', 'email', 'alga') darbinieks1 = Darbinieks ('Basher', 'armbrust', 'bash@edureka.co', 100000) darbinieks2 = Darbinieks ('Daniel', 'meng', 'daniel@stanford.edu', 120000) darbinieks3 = darbinieks ('Muriel', nav, 'muriel@waterloo.edu', 140000) darbinieks4 = darbinieks ('Rachel', 'wendell ',' rach_3@edureka.co ', 160000) darbinieks5 = darbinieks (' Zach ',' galifianakis ',' zach_g@edureka.co ', 160000) print (darbinieks [0]) print (darbinieks3) nodaļa1 = rinda (id) = '123456', name = 'HR') departaments2 = Rindas (id = '789012', nosaukums = 'OPS') departaments3 = Rindas (id = '345678', nosaukums = 'FN') departaments4 = Rinda (id = ' 901234 ', nosaukums =' DEV ')

Pēc tam mēs izveidosim DepartmentWithEmployees gadījumu no darbinieka un departamenta

departaments ar darbiniekiem1 = rinda (departaments = nodaļa1, darbinieki = [darbinieks1, darbinieks2, darbinieks5]) departaments ar darbiniekiem2 = rinda (nodaļa = nodaļa2, darbinieki = [darbinieks3, darbinieks4]) departaments ar darbiniekiem3 = rinda (nodaļa = nodaļa3, darbinieki = [darbinieks1, darbinieks4, darbinieks3 ]) departaments ar darbiniekiem4 = rinda (nodaļa = nodaļa4, darbinieki = [darbinieks2, darbinieks3])

Izveidosim savu Dataframe no rindu saraksta

departmentsWithEmployees_Seq = [departamentsWithEmployees1, departmentWithEmployees2] dframe = spark.createDataFrame (departmentsWithEmployees_Seq) displejs (dframe) dframe.show ()

Pyspark Dataframes 1. piemērs: FIFA Pasaules kausa datu kopa

Šeit mēs esam paņēmuši FIFA Pasaules kausa spēlētāju datu kopu. Mēs ielādēsim šos datus CSV formātāuz aun tad mēs uzzināsim par dažādām transformācijām un darbībām, kuras var veikt ar šo datu ietvaru.

Datu lasīšana no CSV faila

Ielādēsim datus no CSV faila. Šeit mēs izmantosim spark.read.csv metode datu ielādēšanai datu ietvarā fifa_df. Faktiskā metode ir spark.read.format [csv / json] .

fifa_df = spark.read.csv ('faila ceļš / fifa_players.csv', inferSchema = True, header = True) fifa_df.show ()

Dataframe shēma

Apskatīt shēmu, ti. datu ietvara struktūru, mēs izmantosim printSchema metodi. Tas mums dos dažādas mūsu datu ietvara kolonnas, kā arī datu tipu un šīs konkrētās kolonnas nenovēršamos nosacījumus.

fifa_df.printSchema ()

Kolonnu nosaukumi un skaits (rindas un kolonna)

Kad mēs vēlamies apskatīt konkrētā Dataframe nosaukumus un rindu un kolonnu skaitu, mēs izmantojam šādas metodes.

fifa_df.columns // kolonnu nosaukumi fifa_df.count () // rindu skaits len (fifa_df.columns) // kolonnu skaits

37784 8

Atsevišķas kolonnas aprakstīšana

Ja mēs vēlamies apskatīt kādas konkrētas Dataframe kolonnas kopsavilkumu, mēs izmantojam apraksta metodi. Šī metode dod mums dotās kolonnas statistisko kopsavilkumu, ja tā nav norādīta, tā nodrošina datu ietvara statistisko kopsavilkumu.

palaist stropu vaicājumu no komandrindas
fifa_df.describe ('Trenera vārds'). show () fifa_df.describe ('Amats'). show ()

Vairāku kolonnu atlase

Ja mēs vēlamies no datu ietvara atlasīt noteiktas kolonnas, mēs izmantojam atlasiet metodi.

fifa_df.select ('Spēlētāja vārds', 'Trenera vārds'). show ()

Atšķirīgu vairāku kolonnu atlase

fifa_df.select ('Spēlētāja vārds', 'Trenera vārds'). atšķirīgs (). Parādīt ()

Datu filtrēšana

Lai filtrētu datus atbilstoši norādītajam nosacījumam, mēs izmantojam filtru komandu. Šeit mēs filtrējam mūsu datu ietvaru, pamatojoties uz nosacījumu, ka atbilstības ID jābūt vienādam ar 1096, un pēc tam mēs aprēķinām, cik ierakstu / rindu ir filtrētajā izvadā.

fifa_df.filter (fifa_df.MatchID == '1096'). show () fifa_df.filter (fifa_df.MatchID == '1096'). count () // lai iegūtu skaitli

Datu filtrēšana (vairāki parametri)

Mēs varam filtrēt savus datus, pamatojoties uz vairākiem nosacījumiem (UN vai OR)

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

Datu kārtošana (OrderBy)

Lai kārtotu datus, kurus mēs izmantojam Sakārtot pēc metodi. Pēc noklusējuma tas tiek kārtots augošā secībā, taču mēs to varam mainīt arī uz dilstošo secību.

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

PySpark Dataframes 2. piemērs: Superheros datu kopa

Notiek datu ielāde

Šeit mēs datus ielādēsim tāpat kā iepriekš.

Superhero_df = spark.read.csv ('faila ceļš / superheros.csv', inferSchema = True, header = True) Superhero_df.show (10)

Datu filtrēšana

Superhero_df.filter (Superhero_df.Gender == 'Male'). Skaits () // Vīriešu herosu skaits Superhero_df.filter (Superhero_df.dzimums == 'Sieviešu'). Skaits () // Sieviešu herosu skaits

Datu grupēšana

GroupBy tiek izmantots datu ietvara grupēšanai, pamatojoties uz norādīto kolonnu. Šeit mēs grupējam datu ietvaru, pamatojoties uz kolonnu Race un pēc tam ar skaitīt funkciju, mēs varam atrast konkrēto sacensību skaitu.

Race_df = Superhero_df.groupby ('Race'). Skaits (). Show ()

SQL vaicājumu veikšana

Mēs varam arī nodot SQL vaicājumus tieši jebkuram datu ietvaram, tāpēc mums no datu ietvara jāizveido tabula, izmantojot registerTempTable metodi un pēc tam izmantojiet sqlContext.sql () nodot SQL vaicājumus.

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

sqlContext.sql ('atlasiet atšķirīgu (Acu krāsa) no superhero_table'). show ()

sqlContext.sql ('atlasiet atšķirīgu (Acu krāsa) no superhero_table'). skaits ()

2. 3

sqlContext.sql ('superhero_table atlasiet maksimālo (svaru)'). show ()

Un līdz ar to mēs esam pabeiguši šo PySpark Dataframe apmācību.

Tā tas ir, puiši!

Es ceru, ka jūs, puiši, uzzinājāt, kas ir PySpark Dataframe, kāpēc tas tiek izmantots nozarē un tā funkcijas šajā PySpark Dataframe apmācības emuārā. Apsveicam, jūs vairs neesat Dataframes iesācējs. Ja vēlaties uzzināt vairāk par PySpark un izprast dažādus nozares izmantošanas gadījumus, ieskatieties mūsu Dzirkstele ar Python un PySpark apmācība Emuārs.