Карта внутри фильтра в Spark - PullRequest
0 голосов
/ 23 октября 2018

Как я могу фильтровать в отображении?

Пример:

test1 = sc.parallelize(Array(('a', (1,Some(4)), ('b', (2, Some(5)), \
('c', (3,Some(6)), ('d',(0,None))))

Что я хочу:

Array(('a', (1,Some(4)), ('b', (2, Some(5)), \ ('c', (3,Some(6)), \ 
('d',(613,None))))

Что я пробовал (я изменил 0по 613):

test 2 = test1.filter(value => value._2._1 == 0).mapValues(value => 
(613, value._2))

Но возвращается только:

Array('d',(613,None))

Ответы [ 2 ]

0 голосов
/ 23 октября 2018
test1.map{
  case (a, (0, b)) => (a, (613, b))
  case other => other
}
0 голосов
/ 23 октября 2018

Используйте map с сопоставлением с шаблоном:

test1.map { 
    case (x, (0, y)) => (x, (613, y)) 
    case z => z 
}.collect
// res2: Array[(Char, (Int, Option[Int]))] = Array((a,(1,Some(4))), (b,(2,Some(5))), (c,(3,Some(6))), (d,(613,None)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...