我试图在spark中实现一个UDF;它可以同时接受文本和列作为参数。为了达到这个目的,我相信我可以使用一个咖喱UDF。在
该函数用于将字符串文本与DataFrame
列中的每个值相匹配。我已经总结了密码以下:在
def matching(match_string_1):
def matching_inner(match_string_2):
return difflib.SequenceMatcher(None, match_string_1, match_string_2).ratio()
return matching
hc.udf.register("matching", matching)
matching_udf = F.udf(matching, StringType())
df_matched = df.withColumn("matching_score", matching_udf(lit("match_string"))(df.column))
"match_string"
实际上是分配给我正在迭代的列表的值。在不幸的是,这并不像我所希望的那样有效;我正在接受
"TypeError: 'Column' object is not callable".
我想我没有正确调用这个函数。在
应该是这样的:
如果要支持
^{pr2}$match_string_1
的Column
参数,则必须将其重写如下:当前代码不工作,
matching_udf
是,UDF和matching_udf(lit("match_string"))
创建一个Column
表达式,而不是调用内部函数。在相关问题 更多 >
编程相关推荐