我需要根据两列字符串的相似性在两个大数据集之间进行模糊连接(假设每个数据集为30Gb)。例如:
表1:
Key1 |Value1
-------------
1 |qsdm fkq jmsk fqj msdk
表2:
Key2 |Value2
-------------
1 |qsdm fkqj mskf qjm sdk
我们的目的是计算value1的每一行与value2的每一行之间的相似性的余弦,之后,感谢一个预定义的thresold,我可以加入两个表。
关键词:实体分辨率,相似度余弦,倒排索引 (优化相似度的计算),TF-IDF,令牌权重, 单词,文档(值列中的单元格),数据集
我使用Spark(PySpark)来计算连接。在进行的那一刻,我有:
使用倒排索引的策略,我减少了两个文档之间相似性的计算次数(字符串)。这是一个RDD阵列 CommonTokens((key1,key2),tokens):key1是table1中的键,key2是table2中的键,tokens是value1和value2之间的常用标记列表。对于CommonTokens中的每个元素,我计算生成相似度的余弦((key1,key2),相似度)。
在火花中,我做了:
创建函数相似度:
在CommonTokens中应用具有上面定义的相似性函数的地图
spark-submit --master yarn-client --executor-cores 3 --executor-memory 20G - driver-memory 20G --driver-cores 12 --queue cku --num-executors 6运行/ Join.py&
火花问题:
感谢您的任何建议 (对不起我的英文,如果我的问题不明确,请随时向我询问更多信息)