Introduktion till Spark DataFrames
Svep för att visa menyn
En Spark DataFrame är en distribuerad samling data organiserad i namngivna kolumner. Konceptuellt motsvarar det en tabell i en relationsdatabas eller ett kalkylblad med kolumnrubriker, men är utformat för att bearbetas över ett kluster av datorer.
När du går vidare till avsnitt 4 flyttas fokus från gränssnittet till själva datan. För att arbeta effektivt i Databricks måste du förstå DataFrame. Detta är den grundläggande strukturen som används av Apache Spark för att lagra och manipulera data. Oavsett om du använder Python, SQL eller Scala kommer nästan allt du gör att involvera interaktion med en DataFrame.
Det finns också ett PySpark-gränssnitt som du kommer att använda senare.
Apache Spark är en kraftfull motor för att bearbeta enorma datamängder parallellt över många datorer samtidigt. Den är skriven i Scala och är det som faktiskt utför det tunga arbetet i bakgrunden i Databricks.
PySpark är helt enkelt Python-gränssnittet till Spark. Det låter dig skriva Python-kod som i hemlighet instruerar Spark vad som ska göras i bakgrunden.
Så när du skriver ett df.filter() eller df.groupBy() i en Databricks-notebook skriver du PySpark — men det är Spark som faktiskt bearbetar miljoner rader över ditt kluster.
Kalkylbladsanalogi
Det enklaste sättet att visualisera en DataFrame är att tänka på ett enskilt blad i en Excel-arbetsbok. Det har rader med data och kolumner med specifika namn som "Date", "Product_ID" eller "Price". Till skillnad från ett Excel-blad som finns på din dator är dock en Spark DataFrame distribuerad. Det innebär att om din datamängd är för stor för en dator, delar Spark upp "kalkylbladet" i mindre delar och sprider dem över olika noder i ditt kluster.
Varför använda DataFrames istället för råfiler?
När du läser in en rå CSV- eller JSON-fil i en DataFrame gör Databricks två viktiga saker:
- Schemaigenkänning: analyserar datan för att förstå att "Price" är ett tal och "Name" är text;
- Optimering: när data finns i en DataFrame kan Spark använda sin "optimerare" för att hitta det snabbaste sättet att filtrera eller aggregera datan. Det fungerar som en GPS och hittar den mest effektiva vägen till ditt resultat så att du inte slösar datorkraft.
Viktiga egenskaper
Det finns tre huvudsakliga egenskaper hos DataFrames som du bör komma ihåg:
- Oföränderlig: när en DataFrame har skapats kan den inte ändras. Om du "rensar" data eller "tar bort en kolumn" skapar Spark faktiskt en ny DataFrame med dessa ändringar tillämpade. Detta säkerställer dataintegritet;
- Lata utvärderingar: Spark utför faktiskt inget arbete förrän du begär ett resultat (som en räkning eller en visning). Den bygger först en "plan" och exekverar den endast när det är absolut nödvändigt;
- Enhetligt API: du kan skapa en DataFrame med Python och sedan fråga den med SQL. Den underliggande strukturen förblir densamma, vilket möjliggör det "språkblandning" vi övade på i avsnitt 3.
DataFrames vs. Tabeller
I Databricks används termerna "Tabell" och "DataFrame" ofta omväxlande, men det finns en liten skillnad. En Tabell är ett permanent objekt som sparas i din Katalog. En DataFrame är ett tillfälligt objekt som finns i klustrets minne medan din notebook körs.
Vanligtvis kommer ditt arbetsflöde att vara:
- Ladda data från Katalogen till en DataFrame;
- Manipulera DataFrame med kod;
- Spara slutresultatet tillbaka till Katalogen som en Tabell.
1. Hur hanterar en Spark DataFrame en datamängd som är för stor för en enskild dator?
2. Vad händer när du "ändrar" ett DataFrame i Spark, till exempel genom att ta bort en kolumn?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal