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
函数的结果创建一个新列“同义词”