擬合Apache SparkML模型會拋出錯誤

問題

當擬合SparkML模型或管道時,Databricks拋出一個錯誤:

org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 162.0 failed 4次,最近的失敗:Lost Task 0.3 in stage 162.0 (TID 168, 10.205.250.130, executor 1): org.apache.spark.SparkException: failed to execute user defined function($anonfun$9:(string) =>雙)

導致

通常,擬合SparkML模型或Pipeline時出現的錯誤是由於訓練數據的問題造成的。

解決方案

檢查以下問題:

  1. 識別並尋址數據集中的NULL值。Spark需要知道如何處理數據集中缺失的值。
    • 刪除缺少值的行dropna ()
    • 輸入一些值,如零或列的平均值。這個解決方案取決於什麼對數據集有意義。
  2. 確保所有訓練數據被適當地轉換為數字格式。Spark需要知道如何處理分類變量和字符串變量。各種各樣的特征變形金剛可用來解決數據特定的情況。
  3. 檢查共線性.高度相關甚至重複的特征可能會導致模型擬合的問題。這種情況很少發生,但你應該確保排除它。