簡體   English   中英

Flink DataSet.map 得到“錯誤:缺少參數類型”

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

我剛剛開始學習 Scala 和 Flink。 當我嘗試按如下方式運行演示代碼時:

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..
  }
  // ...
}

我得到了錯誤信息:

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

依賴關系如下:

  • linalg:導入微風.linalg
  • 數據集:導入 org.apache.flink.api.scala.DataSet
  • 向量:自定義特征
  • Scala==2.12.8,JDK==1.8

如果您有任何想法,請幫助。 提前致謝。


12 月 12 日更新。

我在v之后添加了一個:T后解決了這個問題,它似乎闡明了v是哪種類型。 但我仍然對此感到困惑。

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

如果Vector in T <: Vectorlinalg.Vector相同,則它需要一個類型參數

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

所以它不能只是T <: Vector ,它應該是T <: Vector[...something...]

如果Vector in T <: Vectorlinalg.Vector不同,那么也許你import breeze.linalg._並且Vector被解析為linalg.Vector 所以使用完全限定名稱

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM