apache-spark - 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")
)
推荐阅读
- javascript - 我正在使用 React 从 Firebase 检索数据,但我的渲染函数中未定义 userItem 为什么
- reactjs - 更改数组内对象的位置
- api - Gridsome 和 hubspot 页面跟踪器集成
- html - 如何使通过 Apache 保护的网站区域的密码?
- haskell - 递归分解整数以及有关 Haskell 中函数的一些问题
- python - 我的 window.clear() 函数不起作用,无法清除窗口
- java - 如何从 Firestore 数据库中检索特定数据?
- batch-file - 将 Windows 命令提示符内容获取到文本文件
- json - 需要 JSON 格式正文的 Scalaj HTTP 端点
- c# - 只有登录和注销流程适用于 Azure Active Directory B2C