PySpark错误:TypeError:参数无效,不是字符串或列



我正试图计算Spark数据帧中一列中所有两对可能的单词之间的相似性。我创建了一个UDF和一个数据框架来测试该功能,我将其定义如下:

#Similarity Function
def lcs_similarityy(vector):
metric_lcs = MetricLCS()
p = []
for i in vector:
for j in vector:
p.append(1 - metric_lcs.distance(i, j))
return  p

#UDF
lcs_similarityyUDF = udf(lambda z: lcs_similarityy(z))
#Spark Data Frame
df = spark.createDataFrame(["GERMAN", "GERMANIA", "GERMANY", "LENOVO"], "string").toDF("Name")

我期望一列16行,因为有16个可能的可能对。然而,一旦我测试了的功能

lcs_similarityUDF(df.select("Name"))

我得到了错误:


TypeError: Invalid argument, not a string or column: DataFrame[Name: string] of type <class 'pyspark.sql.dataframe.DataFrame'>. For column literals, use 'lit', 'array', 'struct' or 'create_map' function.

我一直试图通过不同的方法来解决这个问题,但我无法让它发挥作用,而且我对Spark知之甚少,也不知道它可能是什么问题。我不知道我是不是在UDF中犯了错误,还是定义了数据帧。如果有任何帮助,我将不胜感激。

按以下应用UDF

df.select(
lcs_similarityUDF(df.Name).alias("Name")
)

最新更新