首页 > 解决方案 > 如何将每条 RDD 行与其他行进行比较?火花斯卡拉

问题描述

我实际上正在研究一个包含蛋白质名称及其域的 RDD。示例:'PO7K9I'作为蛋白质名称,'IPR036291;IPR0023'作为结构域我实际上想计算蛋白质结构域之间的相似性,例如,相似性 = 1 两个蛋白质具有完全相同的结构域,相似性 = 0.75 这两个蛋白质仅共享 3 commun domain/4 和最后的相似性=0:在 2 个蛋白质之间没有发现公共域。你能帮我么?

这就是我的 rdd 的样子:

(P25720,IPR002425;IPR036291;IPR020904;IPR0023) (Q9X2F4,IPR006047;IPR013780;IPR0178) (Q29228,IPR016161;IPR016163;IPR016160;IPR029510;IPR016162;IPR0155) (A5N376,IPR000821;IPR009006;IPR011079;IPR001608;IPR020622;IPR0290) (Q5HG16,IPR001792;IPR036046;IPR0179)

标签: scalaapache-spark

解决方案


你能试试这个方法吗

val rdd = (P25720,IPR002425;IPR036291;IPR020904;IPR0023) (Q9X2F4,IPR006047;IPR013780;IPR0178) (Q29228,IPR016161;IPR016163;IPR016160;IPR029510;IPR016162;IPR0155) (A5N376,IPR000821;IPR009006;IPR011079;IPR001608;IPR020622;IPR0290) (Q5HG16,IPR001792;IPR036046;IPR0179)

val combs = rdd.cartesian(rdd) // for creating the Combinations
combs.map(your similarityCheck func)

推荐阅读