如何在 pyspark 的数据框上使用 fuzz.ratio

How to use fuzz.ratio on a data frame on pyspark

我想在数据框上使用 fuzz.ratio,但我正在使用 pyspark(我不能使用 pandas)。

我有函数:

from fuzzywuzzy import fuzz

我创建了一个这样的数据框:

communes_corrompues=spark.createDataFrame(
[("VILLEAINTE", "VILLEPINTE"),
('QILLEPINTE'   ,'VILLEPINTE'),
('AHIENS'   ,'AMIENS'),
('AMIEPS'   ,'AMIENS'),
("CVRGY"    ,"CERGY"),
("CERGA"    ,"CERGY")
 ],
    ['corrompue', 'resultat']
)

而这句话是行不通的:

communes_corrompues_ratio = communes_corrompues.withColumn("fuzzywuzzy_ratio",
lit(fuzz.ratio(col("resultat"),col("corrompue"))))

我有这个错误:

ValueError: Cannot convert column into bool: please use '&' for 'and', '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.

有人可以帮助我吗?或者知道怎么做?

我会为此尝试用户定义的函数,例如:

from pyspark.sql.functions import udf
from fuzzywuzzy import fuzz

@udf("int")
def fuzz_udf(a,b):
  return fuzz.ratio(a,b)

communes_corrompues_ratio.withColumn("fuzzywuzzy_ratio", fuzz_udf(col("resultat"),col("corrompue")).show()