我有以下数据集 df1
Spark中:
root
|-- id: integer (nullable = true)
|-- t: string (nullable = true)
|-- x: double (nullable = false)
|-- y: double (nullable = false)
|-- z: double (nullable = false)
我需要创建一个列,作为 sqrt(x)+cqrt(y)+z*constantK
我正在尝试以下方法:
val constantK=100500
val df2= df1.select($"id", (scala.math.sqrt($"x")+scala.math.cqrt($"y")+$"z"*constantK ))
但是,我得到了一个类型不匹配的错误
<console>:59: error: type mismatch;
found : org.apache.spark.sql.ColumnName
required: Double
val df2= df1.select($"id", (scala.math.sqrt($"x")+scala.math.cqrt($"y")+$"z"*constantK ))
添加基于数据框中其他列的值的复杂计算列的正确方法是什么?
1条答案
按热度按时间mccptt671#
因为您正在尝试在sparksql中使用scala.math函数。sparksql有自己的操作和类型:
支持运算符“*”。看一看https://spark.apache.org/docs/2.3.0/api/sql/index.html