您好我使用自定义UDF获取每列中每个值的平方根。
square_root_UDF = udf(lambda x: math.sqrt(x), DoubleType())
for x in features:
dataTraining = dataTraining.withColumn(x, square_root_UDF(x))
有没有更快的方法来完成它?在这种情况下,多项式展开函数不适用。
答案 0 :(得分:2)
不要使用UDF。而是使用内置:
from pyspark.sql.functions import sqrt
for x in features:
dataTraining = dataTraining.withColumn(x, sqrt(x))
答案 1 :(得分:1)
要将sqrt结果添加为scala中的一列,您需要执行以下操作:
import hc.implicits._
import org.apache.spark.sql.functions.sqrt
val dataTraining = dataTraining.withColumn("x_std", sqrt('x_variance))
答案 2 :(得分:0)
为了加快这种情况下的计算
如果您的dataTraining是RDD,那么这是一个例子
Select
GLACCT_DESCRIP as "Service Income Account",
(TOTAL_BALANCE*-1) as "Dollars"
From
V_GLACCT_DESCRIP,
V_GLACCT_CURRENT_BALANCE
Where
V_GLACCT_DESCRIP.GLACCT_ID = V_GLACCT_CURRENT_BALANCE.GLACCT_ID
and V_GLACCT_DESCRIP.GLACCT IN ('495500-215','495510-215','495550-215','495560-215')