Как получить доступ к элементу в Iterable Tuple (Scala) - PullRequest
0 голосов
/ 07 октября 2019

Я создаю приложение, используя Scala , и я изо всех сил пытаюсь понять некоторые вещи.

Мой первый вопрос о Итерируемые кортежи :

В чем разница между повторяемыми кортежами и обычными кортежами ? Когда и как их использовать?

Второе и более конкретное о моем заявлении :

У меня есть СДР, который имеет эту форму:

(Double, Double), Iterable[(String, String)]

1st - это key , а 2nd содержит некоторые значения .

Теперь предположим, что я хочу выполнить метод .filter () на моем RDD, используя 1-й элемент из 2-го кортежа. Для этого я написал код, показанный ниже:

val filteredRDD = oldRDD.filter{ case ((key,value)) => value.filter(x => x._1 == "some_string") } 
  • key : относится к 1-му кортежу: (Double, Double)
  • значение : относится ко 2-му кортежу: Iterable [(String, String)]

Когда я запускаю эту строку кода, я получаю эту ошибку:

ошибка: несоответствие типов;найдено: Iterable [(String, String)] обязательно: Boolean

, тогда как при попытке использовать фильтр на 1-м кортеже , как показано ниже:

val filteredRDD = oldRDD.filter{ case ((key,value)) => key._1 == 5.4 }  

все работает нормально!

Итак, каков правильный способ использовать метод filter () основанный на 1-м элементе 2-й кортеж , который Итерируемый ?

Большое спасибо от имени, и, пожалуйста, извините, если это звучит слишком глупо. Я новичок в этом языке кодирования.

...