我尝试跳过类型化的数据集API,但我仍然坚持使用过滤:
val ds: Dataset[(Int, Int)] = Seq((1,1)).toDS
ds.filter(ij => ij._1 > ij._2) // does work, but is not readable
ds.filter{case (i,j) => i<j} // does not work
错误:(36,14)缺少扩展函数的参数类型 必须完全知道匿名函数的参数类型。 (SLS 8.5) 预期的类型是:?
我不明白为什么模式匹配不适用于过滤器,而它适用于地图:
ds.map{case (i,j) => i+j}
答案 0 :(得分:1)
明确指出:
ds.filter{x => x match { case (i,j) => i < j}}
答案 1 :(得分:1)
显然这是一个错误:https://issues.apache.org/jira/browse/SPARK-19492坦克向Bodgan提供信息
答案 2 :(得分:0)
这有点可读性:
val ds: Dataset[(Int, Int)] = Seq((1,1)).toDS
ds.filter('_1 > '_2)
注意:您需要导入spark.implicits._