Comparando dois RDDs
Eu tenho dois RDD [Array [String]], vamos chamá-los de rdd1 e rdd2. Eu criaria um novo RDD contendo apenas as entradas do rdd2 que não estão no rdd1 (com base em uma chave). Eu uso o Spark no Scala via Intellij.
Agrupei rdd1 e rdd2 por uma chave (vou comparar apenas as chaves dos dois rdds):
val rdd1Grouped = rdd1.groupBy(line => line(0))
val rdd2Grouped = rdd2.groupBy(line => line(0))
Então, eu usei umleftOuterJoin
:
val output = rdd1Grouped.leftOuterJoin(rdd2Grouped).collect {
case (k, (v, None)) => (k, v)
}
mas isso não parece dar o resultado correto.
O que há de errado com isso? Alguma sugestão?
Exemplo de RDDS (cada linha é uma matriz [String], ofc):
rdd1 rdd2 output (in some form)
1,18/6/2016 2,9/6/2016 2,9/6/2016
1,18/6/2016 2,9/6/2016
1,18/6/2016 2,9/6/2016
1,18/6/2016 2,9/6/2016
1,18/6/2016 1,20/6/2016
3,18/6/2016 1,20/6/2016
3,18/6/2016 1,20/6/2016
3,18/6/2016
3,18/6/2016
3,18/6/2016
Nesse caso, quero adicionar apenas a entrada "2,9 / 6/2016" porque a chave "2" não está no rdd1.