1. 在DataFrame中使用
使用 udf 装饰器
from pyspark.sql.functions import udf
from pyspark.sql.types import ArrayType,StringType,IntegerType,DoubleType,FloatType,BooleanType
# 余弦相似度计算
from scipy import spatial
@udf(returnType=FloatType())
def sim(x,y):
return float(1-spatial.distance.cosine(x, y))
2. 在sql中使用
使用注册方式
def interest(col):
result = -1 if col==0 else 1
return result
spark.udf.register("interest", interest)