Skapa kolumner
I det här kapitlet lär du dig använda metoderna som definieras av Sparks DataFrame-klass för att utföra vanliga dataoperationer.
Låt oss titta på kolumnvisa operationer. I Spark gör du detta med metoden .withColumn(), som tar två argument. Först en sträng med namnet på din nya kolumn, och sedan den nya kolumnen själv.
Den nya kolumnen måste vara ett objekt av klassen Column. Att skapa ett sådant är enkelt – du extraherar en kolumn från din DataFrame med df.colName.
Att uppdatera en Spark DataFrame skiljer sig lite från att arbeta med pandas, eftersom en Spark DataFrame är immutable (oföränderlig). Det innebär att den inte kan ändras direkt, och kolumner kan därför inte uppdateras på plats.
Alla dessa metoder returnerar alltså en ny DataFrame. För att skriva över den ursprungliga DataFrame:n måste du tilldela om den returnerade DataFrame:n med metoden på följande sätt:
df = df.withColumn("newCol", df.oldCol + 1)
Koden ovan skapar en DataFrame med samma kolumner som df plus en ny kolumn, newCol, där varje värde är lika med motsvarande värde i oldCol plus ett.
För att skriva över en befintlig kolumn anger du helt enkelt kolumnens namn som första argument!
Kom ihåg att en SparkSession med namnet spark redan finns i din arbetsmiljö.
Den här övningen är en del av kursen
Grunderna i PySpark
Övningsinstruktioner
- Använd metoden
spark.table()med argumentet"flights"för att skapa en DataFrame med värdena från tabellenflightsi.catalog. Spara den somflights. - Visa de första raderna i
flightsmedflights.show(). Kontrollera utdata: kolumnenair_timeinnehåller flygtiden i minuter. - Uppdatera
flightsså att den inkluderar en ny kolumn kalladduration_hrs, som innehåller flygtiden för varje flyg i timmar (du behöver divideraair_timemed antalet minuter per timme).
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Create the DataFrame flights
flights = spark.table(____)
# Show the head
____.____()
# Add duration_hrs
flights = flights.withColumn(____)