Я создаю приложение, используя 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-й кортеж , который Итерируемый ?
Большое спасибо от имени, и, пожалуйста, извините, если это звучит слишком глупо. Я новичок в этом языке кодирования.