2016-12-02 121 views
0

我需要调用scala.math.pow才能调用一个数字,但我在使用scala sql创建一个列时出现问题并将其转换为double。强制将sql.ColumnName强制转换为

这是我用来调用电源功能的线路。

scala.math.pow(pr,$”numinLinks”) 

我有具有我试图转换为双使用此UDL列火花SQL数据帧。

val toDouble = udf[Double, Int](_.toDouble) 

然后我叫我的这个数据帧。

val joinDFAdjusted = join.withColumn(“numInLinks”, toDouble(joinDF(“numInLinks”))) 

在架构,它表明我的列是StructField(numInLinks,双人间,真)的。这是我收到的错误。

found: org.apache.spark.sql.ColumnName 
required: Double 

回答

1

只需使用pow功能:

import org.apache.spark.sql.functions.pow 

join.withColumn("numInLinksExp", pow($"pr", $"numinLinks")) 
+0

这里是代码段的更多方面。我需要在每个项目上调用pow函数。 pr变量将根据该行而改变。该列的全局更改将不起作用。 –

+0

val result = joinDFAdjusted.select($“p1_main”,$“p2_main”,(($“numInLinks”/ $“totalInLinks”)*($“numOutLinks”/ $“totalOutLinks”))*(scala.math.pow (PR,$” numinLinks”))) –