選取
Spark 中對應 SQL SELECT 的是 .select() 方法。這個方法可以接受多個引數——每個你想選取的欄位各一個。這些引數可以是字串形式的欄位名稱(每個欄位一個字串),也可以是欄位物件(使用 df.colName 語法)。當你傳入欄位物件時,就能在該欄位上做加減等運算,來變更其中的資料,就像在 .withColumn() 裡做的一樣。
.select() 和 .withColumn() 的差別在於:.select() 只會回傳你指定的那些欄位;而 .withColumn() 會回傳整個 DataFrame 的所有欄位,外加你新定義的那一欄。通常在一開始就先丟掉不需要的欄位會比較好,這樣在整理資料時就不會一直帶著多餘的資料。在這種情況下,你應該使用 .select(),而不是 .withColumn()。
請記住,名稱為 spark 的 SparkSession 已經在你的工作區裡,還有 Spark DataFrame flights。
本練習屬於課程
PySpark 基礎
練習說明
- 以字串傳入欄位名稱,從
flights選取"tailnum"、"origin"、"dest"這三個欄位。將結果存成selected1。 - 使用
df.colName語法選取"origin"、"dest"、"carrier"這三個欄位,接著使用已為你定義好的兩個篩選條件(filterA和filterB)來過濾,只保留從 SEA 飛往 PDX 的航班。將結果存成selected2。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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(____)