我有两个没有公共密钥的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。','输入',20)。
现在我需要根据数据的相似性加入这两个RDD。对,知道RDD的大小约为10000,但将来它会长大。
我的实际解决方案是:两个RDD的笛卡尔连接,然后计算每行的ref和raw属性之间的距离,然后按id分组并选择最佳匹配。
在这种规模的RDD中,这个解决方案正在发挥作用,但我担心将来笛卡尔联盟可能会变得很大。
什么是更好的解决方案? 我试着看看Spark MLlib,但不知道从哪里开始,使用哪种算法等。任何建议都将不胜感激。