0

私はPLSを使ってALSアルゴリズムの後にLSHを使用しましたが、私は誤って探索中にいくつかの失われた行を見たまで、すべてがSpark LSHのドキュメントの例で実装されましたhttps://spark.apache.org/docs/latest/ml-features.html#tab_scala_28並べ替えを使用して行を見つけることができませんLSHの後に

idA == 1の行を見つけようとすると、私はそれを実行できます。再分割(1).write.csvまたはソート - > idA == 1の行はすべてテーブルにありません。誰かがそれがどのように可能であるか説明できますか?

私は Pythonのバージョンは3.6

少しコード

brp = BucketedRandomProjectionLSH(inputCol="features", outputCol="hashes", 
            bucketLength=10.0, numHashTables=3) 
table = model.approxSimilarityJoin(Pred_Factors, Pred_Factors, threshold=10.0, distCol="EuclideanDistance") \ 
      .select(col("datasetA.id").alias("idA"), 
        col("datasetB.id").alias("idB"), 
        col("EuclideanDistance")).cache() 

enter image description here

私も書き込みしようとしたPSで、スパークバージョンバージョン2.2.0用のPython APIを使用しましたファイルをcsvにコピーして、これらのidとEuclidianDistanceを検索します。これはすべてが失敗していることがわかります。これらの紛失IDは本当に多すぎます(id = 1だけでなく)。たぶん私はLSHアルゴリズムのいくつかの詳細を理解していないが、自分自身でスパークLSHの動作のロジックを見つけることができません。

答えて

0

ここで問題が発生したため、ランダムパーティションを使用しました。だからpartitionBy(('idA')を使用しなければならない場合は、table.orderBy('idA')を適切な結果として使用することができます。

関連する問題