繁体   English   中英

如何将任何 Scala 转换为 Double

[英]How to cast Any Scala to Double

我正在迭代一个数据框,需要对每一行应用一些自定义代码,所以我正在这样做

convertedPaths.foreach { row : Row => 
  cFMap = row.getValuesMap(channelSet.toSeq)

假设 channelSet 是所有列名称的集合。 现在我已经将 cFMap 的类型声明为 [String, Any] 作为 getValuesMap (据我所知将返回列的数据类型)

此外,所有列都是 Long 类型,所以我试图这样做:

channelSet.foreach { key : String => 
  var frequency = cFMap.get(key).get.asInstanceOf[Double]

  var value = c * frequency 

给定 c 是 Double 类型的变量,值需要是 c 和频率的乘积,但这给了我以下错误:

overloaded method value * with alternatives: (x: Double)Double <and> (x: Float)Double <and> (x: Long)Double <and> (x: Int)Double <and> (x: Char)Double <and> (x: Short)Double <and> (x: Byte)Double cannot be applied to (Any)

为什么 asInstanceOf[Double] 不是正确的解决方案,对此的解决方案是什么?

虽然这并不能完全回答我的问题陈述,而且我正在尝试阅读有关如何收集结果的累加器,但逻辑的主要部分可以在convertedPaths.forEach 循环中运行。

我能够通过分配来解决我的问题

var cFMap = Map[String, Long]() 

代替

var cFMap = Map[String, Any]() 

正如我所知,convertedPaths 中的所有列都是 Long 类型

暂无
暂无

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

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