列に100K個の名前があります。私は彼らが同じかどうか(D'souza、D'souza)、またはほぼ同じ(D'souza、Dsouza)かどうかを確認するために、それぞれを比較する必要があります。スカラを使用して1つの行を他のすべての行と比較する方法
私はカサンドラテーブルをRDDに読み込み、列のデカルト積を作成してタプルを作成しました。しかし、列サイズが100Kであるため、これは巨大なRDDをもたらし、最終的にスパークジョブがぶら下がります。ここでの問題は、デカルト結果は理想的ではない100K *の100Kの順になるということです
val valueRdd = sc.cassandraTable("keyspace", "some_table")
val dataRDD = valueRdd
.map(row => {
(
row
.getStringOption("name")
.get,
}).cache()
val cartesianResult = dataRDD cartesian dataRDD
//Followed by some compare logic. May be soundex or some other library or some fuzzy logic.
:以下
は、私が持っているコードです。これを行うための良い方法はありますか?
問題文は、指定されたデータセット内の兄弟を識別することです。データセットには100K +のデータが含まれます。
重複した名前と同じような名前は何ですか?重複排除?データを推測する?あるいは、文字通り、可能なすべてのペアと、それらが同じか類似しているかどうかを文字通りだけ必要としますか? –
アイデアは兄弟を識別することです。この場合、名前には小さなバリエーションがありますが、最終的には同じ人物を参照します。例:D'souza、Dsouzaは同じ人ですが、名前は「 '」で異なります。だから私はそのようなすべてのバリエーションを特定し、すべての兄弟を共通の名前に置き換えています。例:D'souza、DsouzaまたはD souzaまたは類似の名前のすべてのインスタンスは、Dsouzaという共通の名前を持ちます。 – Ankur