Pyspark-对一组不同的对使用approxSimilarityJoin

Pyspark-对一组不同的对使用approxSimilarityJoin,pyspark,Pyspark,我正在使用Pyspark并试图计算两个数据帧中向量之间的Jaccard相似性。为此,我可以使用approxSimilarityJoin来计算距离,然后从1.0中减去。通过使用approxSimilarityJoin,它计算每对的距离。因为我只对2个数据帧中的匹配之间的距离感兴趣,所以我生成了大量冗余数据,当我使用大型数据集时,这些数据会导致代码失败 有谁能推荐一种只计算两个数据帧中定义的一组对之间的approxSimilarityJoin的方法吗 我使用的代码如下: # build the mo

我正在使用Pyspark并试图计算两个数据帧中向量之间的Jaccard相似性。为此,我可以使用approxSimilarityJoin来计算距离,然后从1.0中减去。通过使用approxSimilarityJoin,它计算每对的距离。因为我只对2个数据帧中的匹配之间的距离感兴趣,所以我生成了大量冗余数据,当我使用大型数据集时,这些数据会导致代码失败

有谁能推荐一种只计算两个数据帧中定义的一组对之间的approxSimilarityJoin的方法吗

我使用的代码如下:

# build the model pipeline and fit it to the dataset
jacc_model = Pipeline(stages=[RegexTokenizer(
    pattern="", inputCol="jacc_var", outputCol="tokens", minTokenLength=1),
    HashingTF(inputCol="tokens", outputCol="raw_vectors"),
    IDF(inputCol="raw_vectors", outputCol="vectors"),                          
    MinHashLSH(inputCol="vectors", outputCol="lsh")    
    ]).fit(jacc_var_1)

# hash the data using the model 
jacc_var_1_hashed = jacc_model.transform(jacc_var_1).select(Unique_ID,'vectors','lsh')
jacc_var_2_hashed = jacc_model.transform(jacc_var_2).select(Unique_ID,'vectors','lsh')


# generate results and isolating the pairs I need
jacc_model_results = jacc_model.stages[-1].approxSimilarityJoin(jacc_var_1_hashed, jacc_var_2_hashed,jacc_threshold)\
            .select(F.col("datasetA."+Unique_ID).alias(Unique_ID),
            F.col("datasetB."+Unique_ID).alias('Unique_ID_B'),
            F.col('distCol')        
            ).withColumn('direct_ID_comparison', F.col(Unique_ID) == F.col('Unique_ID_B'))\
            .where(F.col('direct_ID_comparison') == True)\
            .withColumn('Jaccard_Similarity_Name', F.round((1.0 - F.col('distCol')),2))\
            .select(Unique_ID, 'Jaccard_Similarity_Name')