我有两个Spark RDD没有我需要加入的公共密钥 .

第一个RDD来自cassandra表a,其包含参考项集(id,item_name,item_type,item_size),例如:(1,'item 1','type_a',20) . 第二个RDD每晚从另一个系统导入,它包含大致相同的没有id的数据,并且是原始格式(raw_item_name,raw_type,raw_item_size),例如('item 1','type a',20) .

现在我需要根据数据的相似性加入这两个RDD . 对,知道RDD的大小约为10000,但将来它会长大 .

我的实际解决方案是:两个RDD的笛卡尔连接,然后计算每行的ref和raw属性之间的距离,然后按id分组并选择最佳匹配 .

在这种规模的RDD中,这个解决方案正在发挥作用,但我担心将来笛卡尔联盟可能会变得很大 .

什么是更好的解决方案?我试着看看Spark MLlib,但不知道从哪里开始,使用哪种算法等 . 任何建议将不胜感激 .