Scala Spark word2vec在数据帧上查找同步

Scala Spark word2vec在数据帧上查找同步,scala,apache-spark,Scala,Apache Spark,我正在尝试使用findSynonyms操作,而不进行收集(操作)。这里有一个例子。我有一个保存向量的数据帧 df.show() +--------------------+ | result| +--------------------+ |[-0.0081423431634...| |[0.04309031420520...| |[0.03857229948043...| +--------------------+ 我想在此数据帧上使用findSynonyms。

我正在尝试使用
findSynonyms
操作,而不进行
收集
(操作)。这里有一个例子。我有一个保存向量的
数据帧

df.show()

+--------------------+
|              result|
+--------------------+
|[-0.0081423431634...|
|[0.04309031420520...|
|[0.03857229948043...|
+--------------------+
我想在此数据帧上使用
findSynonyms
。我试过了

df.map{case Row(vector:Vector) => model.findSynonyms(vector)}

但它抛出空指针异常。然后我了解到,spark不支持嵌套的转换或操作。一种可能的方法是收集这个
DataFrame
,然后运行
findSynonyms
。如何在
数据帧
级别执行此操作?

如果我理解正确,您希望对
数据帧
中的每一行执行一个函数。为此,您可以声明一个用户定义函数(UDF)。在您的情况下,UDF将采用向量作为输入

import org.apache.spark.sql.functions._

val func = udf((vector: Vector) => {model.findSynonyms(vector)})
df.withColumn("synonymes", func($"result"))
将使用
func
函数的结果创建一个新列“同义词”