Selectarea coloanelor
Echivalentul în Spark al instrucțiunii SELECT din SQL este metoda .select(). Aceasta acceptă mai multe argumente – câte unul pentru fiecare coloană pe care vrei să o selectezi. Argumentele pot fi fie numele coloanei ca șir de caractere, fie un obiect de tip coloană (folosind sintaxa df.colName). Când transmiți un obiect de tip coloană, poți efectua operații precum adunarea sau scăderea asupra acelei coloane pentru a modifica datele din ea, similar cu ce se întâmplă în interiorul metodei .withColumn().
Diferența dintre metodele .select() și .withColumn() este că .select() returnează doar coloanele pe care le specifici, în timp ce .withColumn() returnează toate coloanele DataFrame-ului, plus cea pe care ai definit-o. De obicei, este o idee bună să elimini coloanele de care nu ai nevoie încă de la începutul unei operații, ca să nu cari date inutile în timp ce prelucrezi setul de date. În acest caz, vei folosi .select(), nu .withColumn().
Amintește-ți că o sesiune SparkSession numită spark este deja disponibilă în spațiul tău de lucru, împreună cu DataFrame-ul Spark flights.
Acest exercițiu face parte din cursul
Fundamente PySpark
Instrucțiuni pentru exercițiu
- Selectează coloanele
"tailnum","origin"și"dest"dinflightstransmițând numele coloanelor ca șiruri de caractere. Salvează rezultatul caselected1. - Selectează coloanele
"origin","dest"și"carrier"folosind sintaxadf.colName, apoi filtrează rezultatul aplicând ambele filtre deja definite pentru tine (filterAșifilterB), pentru a păstra doar zborurile de la SEA la PDX. Salvează rezultatul caselected2.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Select the first set of columns
selected1 = flights.select("____", "____", "____")
# Select the second set of columns
temp = flights.select(____.____, ____.____, ____.____)
# Define first filter
filterA = flights.origin == "SEA"
# Define second filter
filterB = flights.dest == "PDX"
# Filter the data, first by filterA then by filterB
selected2 = temp.filter(____).filter(____)