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