我尝试从这本打开的书中获取有关地图匹配工作的示例。我正在使用 scala 2.10 和 spark 2.0.2。
不幸的是,语法和功能发生了变化。
case class NodeEntry(nodeId: Long, latitude: Double, longitude: Double, tags: Array[String])
val nodeDS = nodes.map{node =>
NodeEntry(node.getId,
node.getLatitude,
node.getLongitude,
node.getTags.map(_.getValue).toArray
)}.toDS.cache
我收到错误“值映射不是 java.util.List [org.openstreetmap.osmosis.core.domain.v0_6.WayNode] 的成员”
和“值 toDS 不是 scala.collection.mutable.ArrayBuffer[Nothing] 的成员可能的原因:在 `value toDS' 之前可能缺少分号?”
我试图将 nodes.map 更改为以下内容:
val nodeDS = nodes.map { node =>
NodeEntry(node.getId,
node.getLatitude,
node.getLongitude,
node.getTags.toArray()
)}
但后来我得到这个错误:类型不匹配;found : Array[Object] required: Array[String] 注意:Object >: String,但类 Array 在类型 T 中是不变的。您可能希望研究通配符类型,例如 _ >: String。(SLS 3.2.10)