進一步解析
你已經把這個資料集整理成與原本大不相同的格式,但還有幾件事要完成。你需要先將欄位資料整理好,方便之後分析使用,並移除幾個中繼欄位。
spark 內容已可使用,且 pyspark.sql.functions 已以 F 作為別名。pyspark.sql.types 中的型別也已匯入。split_df DataFrame 狀態與你上次留下時相同。別忘了,你可以在主控台區域對 DataFrame 使用 .printSchema() 來查看欄位名稱與型別。
⚠️ 注意: 若你看到 AttributeError,請重新整理練習,並在不按 執行程式碼 的情況下按一下 顯示答案。
本練習屬於課程
使用 PySpark 清理資料
練習說明
- 建立一個名為
retriever的新函式,接受兩個引數:分割後的欄位(cols)與欄位總數(colcount)。此函式應回傳一個清單,內容為尚未被定義為欄位的項目(也就是清單中第 4 個項目之後的所有元素)。 - 將此函式定義為 Spark 的 UDF,回傳字串的 Array。
- 使用該 UDF 與 DataFrame 中可用的欄位,建立新欄位
dog_list。 - 移除欄位
_c0、colcount與split_cols。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
def retriever(____, ____):
# Return a list of dog data
return ____[4:____]
# Define the method as a UDF
udfRetriever = ____(____, ArrayType(____))
# Create a new column using your UDF
split_df = split_df.withColumn('dog_list', ____(____, ____))
# Remove the original column, split_cols, and the colcount
split_df = split_df.drop('____').____('____').____('____')