個人とその詳細の一部を含む大規模なデータセットがあります。データセットには多数の重複が含まれており、多数のレコードがそれらの特徴の 1 つに基づいて相互に「関連」しています。正しいレコードがリンクされていることを確認するために、3 つのフィーチャのうち 2 つの一致がリンクとしてカウントされます。各個人は、可能なすべてのレコードにリンクする必要があり、それぞれに clusterId が割り当てられます。
次のデータセット構造があります。
+--+----+----+----+
|id|col1|col2|col3|
+--+----+----+----+
|1 |A |B |C |
+--+----+----+----+
|2 |A |B |D |
+--+----+----+----+
|3 |A |Z |D |
+--+----+----+----+
ID 1 は ID 2 にリンクされ (col1 と col2 が同じであるため)、ID 2 は ID 3 にリンクされます (col1 と col3 が同じであるため)。ID 1 と 2 をリンクすると、この「クラスター」にさらに情報が追加され、リンクが確立された後、ID 3 はそのクラスターに属します。
データ セットは非常に大きく (2,800 万レコード)、適切な時間枠内でこれらの関係を構築できるかどうかはわかりません。
これを解決する最も速くてエレガントな方法は何ですか?