在pyspark中,在udf中导入模块和在udf之外导入模块有什么区别?

2024-09-27 07:28:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算两列之间的欧几里德距离,它们都有浮点列表。我试着用两种方法来使用udf进行计算——一种是在函数内部导入,另一种是在函数外部导入。 第一种方法-

@pandas_udf(T.FloatType(), PandasUDFType.SCALAR)
def calculate_euclidean_distance(feature1, feature2):
    features_df = pd.DataFrame({"feature1": feature1, "feature2": feature2})
    features_df["euclidean_distance"] = features_df.apply(lambda x: distance.euclidean(x["feature1"], x["feature2"]), axis=1)
    return features_df["euclidean_distance"]

第二种方法-

@pandas_udf(T.FloatType(), PandasUDFType.SCALAR)
def calculate_euclidean_distance(feature1, feature2):
    from scipy.spatial import distance
    import pandas as pd
    features_df = pd.DataFrame({"feature1": feature1, "feature2": feature2})
    features_df["euclidean_distance"] = features_df.apply(lambda x: distance.euclidean(x["feature1"], x["feature2"]), axis=1)
    return

特征\u df[“欧几里德距离”]

他们两个都在我当地的spark工作。我想知道这两种方法有什么区别?你知道吗


Tags: 方法函数距离pandasdfdistancepdfeatures

热门问题