scala - Flink DataSet.map 得到'错误:缺少参数类型'
问题描述
我刚刚开始学习 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
- 向量:自定义特征
- 斯卡拉==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与 thenT <: Vector
相同,linalg.Vector
则需要一个类型参数
trait Vector[@spec(Int, Double, Float) V] extends VectorLike[V, Vector[V]] {
...
所以 不能 公正T <: Vector
, 应该 是T <: Vector[...something...]
.
如果Vector
inT <: Vector
与 不同linalg.Vector
,那么也许你import breeze.linalg._
和Vector
被解析为linalg.Vector
。所以使用完全限定名
private def demoFunction[T <: yourpackage.yoursubpackage.Vector] ...
推荐阅读
- powershell - 我可以使用 PowerShell 在 Where-Object 中使用 splatting 吗?
- amazon-web-services - 应用程序负载均衡器重定向
- mysql - 提高表性能的最佳实践是什么?
- android - REACT_NATIVE - 处理来自自动辅助服务重定向 Web URL 的 DeepLink
- node.js - 有没有办法使用与“路径”属性相同样式的打字稿配置文件从节点模块抽象导入?
- flutter - 我在 android studio 中打开了一个现有的颤振应用程序,但它显示错误
- json - 在 asp.netcore 中读取 appsettings.json 值
- typescript - 为什么在使用泛型类型的空类中编译不会失败?
- database - Heroku 数据库不使用 psql 响应
- android - 无法在中文自定义ROM上定期运行3分钟后台服务发送经纬度