RDD中的Scala嵌套迭代

时间:2018-09-12 15:15:40

标签: scala loops csv apache-spark nested

我必须遍历所有列以找到1列值的相似性。例如:

ID,FN,LN,Phone
-----------
1,James,Butt,872-232-1212
2,Josephine,Darakjy, 872-232-1213
3,Art,Venere,872-232-1214
4,Lenna,Paprocki,872-232-1215
5,Donette, Foller,872-232-1216
6,Jmes,Butt,666-232-1212
7,Donette, Foller,888-232-1216
8,Josphne,Darkjy, 555-232-1213

在循环中,我将取FN,即'James',并使用完整的字符串距离(例如Levenshtein)查看完整数据集中的名称是否相似(在这种情况下,我与ID#6匹配): 'Jmes',我将通过添加一个新的GUID列来创建存储桶:

ID,FN,LN,Phone,GrupId
----------------------
1,James,Butt,872-232-1212,G1
2,Josephine,Darakjy, 872-232-1213,G2
3,Art,Venere,872-232-1214,G3
4,Lenna,Paprocki,872-232-1215,G4
5,Donette, Foller,872-232-1216,G5
6,Jmes,Butt,666-232-1212,G1
7,Donette, Foller,888-232-1216,G5
8,Josphne,Darkjy, 555-232-1213,G2

我必须在多个列(例如LN,电话)上执行相同的操作。想象一下,如果我有100万条记录。

任何想法,建议或链接都​​会受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

我绝对不会成对尝试任何东西,而宁愿考虑对每个字段的Levenshtein-y索引进行编码并即时累积结果。我可能会从后缀树开始。 我一到笔记本电脑,便会尝试绘制原型...


更新:经过一番阅读后,我倾向于使用Affinity Clustering 1 结合成对(是的,我知道)Levenshtein缓存在Trie上的 2 。正在进行代码...