我有一个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],所以您的前两行不会编译 –