我有一个类似于
的RDDCELL-ID | COUNT
--------------
abcd 10
DEF 20
ghi 15
我需要用
获得RDDCELL-ID-1 | CELL-ID-2 | PRODUCT
--------------
abcd DEF 200
abcd ghi 150
DEF abcd 200
DEF ghi 300
...
....
如何完成?我一直在使用笛卡尔产品,但无法获得输出
val result = orginalRDD.cartesian(orginalRDD).collect {
case ((t1: _,Int), (t2: _,Int)) if t1 != t2 => t1 * t2
}
您可以制作t1
,而t2
表示元组(整个"记录"):
val result = orginalRDD.cartesian(orginalRDD).collect {
case (t1: (String ,Int), t2: (String ,Int)) if t1 != t2 => (t1._1, t2._1, t1._2 * t2._2)
}
或者,您可以执行相同的操作,但是使用图案匹配进一步分解它们:
val result = orginalRDD.cartesian(orginalRDD).collect {
case (t1@(s1 ,i1), t2@(s2, i2)) if t1 != t2 => (s1, s2, i1 * i2)
}
您的解决方案看起来像是一次尝试同时做...