简体   繁体   English

Flink DataSet.map 得到“错误:缺少参数类型”

[英]Flink DataSet.map get 'error: missing parameter type'

I am just start to learn Scala and Flink.我刚刚开始学习 Scala 和 Flink。 When I try to run demo codes as follow:当我尝试按如下方式运行演示代码时:

private def demoFunction[T <: Vector](dataSet: DataSet[T])
  : DataSet[(linalg.Vector[Double], linalg.Vector[Double])] = {

  val metrics = dataSet.map{
    v => (1.0, v.asBreeze, linalg.Vector.zeros[Double](v.size))
  }.reduce{
    // reduce code..
  }
  // ...
}

I got err info:我得到了错误信息:

Error: missing parameter type v => (1.0, v.asBreeze, linalg.Vector.zeros[Double](v.size))

The dependencies are follow:依赖关系如下:

  • linalg: import breeze.linalg linalg:导入微风.linalg
  • DataSet: import org.apache.flink.api.scala.DataSet数据集:导入 org.apache.flink.api.scala.DataSet
  • Vector: a custom trait向量:自定义特征
  • Scala==2.12.8, JDK==1.8 Scala==2.12.8,JDK==1.8

If you have any ideas, please help.如果您有任何想法,请帮助。 Thanks in advance.提前致谢。


Update on December 12. 12 月 12 日更新。

I fix this problem after adding a :T after v , It seems to clarify which type v is.我在v之后添加了一个:T后解决了这个问题,它似乎阐明了v是哪种类型。 But I am still confused with it.但我仍然对此感到困惑。

val metrics = dataSet.map{
  v:T => (1.0, v.asBreeze, linalg.Vector.zeros[Double](v.size))
}// ...

If Vector in T <: Vector is the same as linalg.Vector then it takes a type parameter如果Vector in T <: Vectorlinalg.Vector相同,则它需要一个类型参数

trait Vector[@spec(Int, Double, Float) V] extends VectorLike[V, Vector[V]] { 
...

so it can't be just T <: Vector , it should be T <: Vector[...something...] .所以它不能只是T <: Vector ,它应该是T <: Vector[...something...]

If Vector in T <: Vector is different from linalg.Vector , then maybe you import breeze.linalg._ and Vector is resolved as linalg.Vector .如果Vector in T <: Vectorlinalg.Vector不同,那么也许你import breeze.linalg._并且Vector被解析为linalg.Vector So use fully qualified name所以使用完全限定名称

private def demoFunction[T <: yourpackage.yoursubpackage.Vector] ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM