如何使用spark把数组转换成向量

sparkUDF入参是Array[Float]类型,转换为 Spark 中的 org.apache.spark.ml.linalg.Vector 类型,可以编写一个自定义的 Spark UDF 来完成这个转换。以下是一个示例代码:

import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.sql.functions.udf

// 示例数据
val floatArray: Array[Float] = Array(1.0f, 2.0f, 3.0f)

// 自定义UDF将Array[Float]转换为Vectors.dense
val arrayToVectorUDF = udf { (data: Seq[Float]) =>
  Vectors.dense(data.map(_.toDouble).toArray)
}

// 将数组转换为DataFrame并应用UDF
val df = Seq(floatArray).toDF("arrayColumn")
val result = df.withColumn("vectorColumn", arrayToVectorUDF(col("arrayColumn")))

result.show(truncate = false)

这段代码首先定义了一个名为 arrayToVectorUDF 的自定义UDF。这个UDF接受类型为 Seq[Float] 的输入参数,并将其转换为 Vectors.dense 类型。

接着,代码将 floatArray 转换为一个包含一列的 DataFrame,并使用定义的 UDF 将数组列转换为向量列。最后,使用 show() 方法展示转换后的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值