Spark word2vec findSynonyms on Dataframes



我正在尝试在没有collecting(操作(的情况下使用findSynonyms操作。下面是一个示例。我有一个保存向量的DataFrame

df.show()
+--------------------+
|              result|
+--------------------+
|[-0.0081423431634...|
|[0.04309031420520...|
|[0.03857229948043...|
+--------------------+

我想在这个DataFrame上使用findSynonyms.我试过了

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

但它会引发空指针异常。然后我了解到,Spark不支持嵌套转换或操作。一种可能的方法是收集此DataFrame然后运行findSynonyms。如何在DataFrame级别执行此操作?

如果我

理解正确,您想对DataFrame中的每一行执行一个功能。为此,您可以声明用户定义函数 (UDF(。在您的情况下,UDF 将采用向量作为输入。

import org.apache.spark.sql.functions._
val func = udf((vector: Vector) => {model.findSynonyms(vector)})
df.withColumn("synonymes", func($"result"))

将使用func函数的结果创建一个新列"同义词"。

最新更新