Gia*_*chi 2 scala apache-spark
我知道这不是很重要,但我想知道是否可以节省两行代码。
我有一个数据集 inputData,我想将其分成两部分。我正在使用数据集类的 randomSplit 方法。但是,我被迫使用三行代码来执行此操作:
val sets = inputData.randomSplit(Array[Double](0.7, 0.3), 18)
val training = sets(0)
val test = sets(1)
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想做类似的事情
val (training, test) = inputData.randomSplit(Array[Double](0.7, 0.3), 18)
Run Code Online (Sandbox Code Playgroud)
但由于错误,此代码无法编译:
Error:(146, 13) constructor cannot be instantiated to expected type;
found : (T1, T2)
required: Array[org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]]
Run Code Online (Sandbox Code Playgroud)
有可能实现我想要的吗?
模式匹配数组:
val Array(training, test) = inputData.randomSplit(Array[Double](0.7, 0.3), 18)
Run Code Online (Sandbox Code Playgroud)
或更长的(但仍然是单个表达式)
val (training, test) = inputData.randomSplit(Array[Double](0.7, 0.3), 18) match {
case Array(training, test) => (training, test)
}
Run Code Online (Sandbox Code Playgroud)
请记住这一点,它无法由编译器验证,并且可能在运行时失败MatchError。
| 归档时间: |
|
| 查看次数: |
4489 次 |
| 最近记录: |