我的RDD类似于
// build.gradle project
repositories {
maven{
url 'https://dl.bintray.com/omaflak/maven'
}
}
// build.gradle module
dependencies {
compile 'me.aflak.libraries:filter-annotation:1.0'
annotationProcessor 'me.aflak.libraries:filter-processor:1.0'
}
我需要使用
获取RDDCELL-ID | COUNT
--------------
abcd 10
DEF 20
ghi 15
如何做到这一点?我一直使用笛卡尔积,但无法得到输出
CELL-ID-1 | CELL-ID-2 | PRODUCT
--------------
abcd DEF 200
abcd ghi 150
DEF abcd 200
DEF ghi 300
...
....
答案 0 :(得分:4)
您可以让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)
}
您的解决方案似乎是尝试同时执行这两项操作......