我有一個createDataFrame方法,它返回一個Option [DataFrame]。然後我想'獲取'DataFrame並在後面的代碼中使用它。我得到一個類型不匹配,我無法修復:如何正確處理Spark/Scala中的選項?
val df2: DataFrame = createDataFrame("filename.txt") match {
case Some(df) => { //proceed with pipeline
df.filter($"activityLabel" > 0)
case None => println("could not create dataframe")
}
val Array(trainData, testData) = df2.randomSplit(Array(0.5,0.5),seed = 12345)
我需要DF2爲類型:數據幀不然以後的代碼將無法識別DF2的數據幀例如val Array(trainData, testData) = df2.randomSplit(Array(0.5,0.5),seed = 12345)
但是,case None
語句不是DataFrame類型,它返回Unit,所以不會編譯。但是如果我不聲明df2的類型,那麼後面的代碼將不會被編譯,因爲它不會被識別爲DataFrame。如果有人可以提出一個有用的解決方案 - 一段時間以來一直圍繞着這個問題進行討論。謝謝
謝謝回答@Chobeat你能告訴。我什麼意思請請用一些示例代碼?謝謝! – LucieCBurgess
我添加了一個小樣本,但目前我沒有時間驗證是的。不過,它應該清楚我的意思。 – Chobeat
選項[A]上的地圖會再次給您選項[A],所以您的前兩行不會編譯 –