Конвертировать набор для отдельных объектов в Scala Spark - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть RDD, в котором данные имеют форму (x, y), ExampleObject

Итак, класс имеет 2 переменные:

  1. кортеж, состоящий из xи y (обе являются строками)
  2. exampleObject класса ExampleObject

Класс ExampleObject дополнительно содержит 2 атрибута:

  1. setObjects1 изТип класса SetObject1
  2. setObjects2 типа класса SetObject2

Каждый класс SetObject1 дополнительно содержит 2 атрибута:

  1. singleObject класса SingleObjectтип
  2. setObjects3 класса класса SetObject3

Можно предположить, что все атрибуты имеют связанный с ним метод получения.Есть еще один класс SingleTransformedObject, в который я хочу отобразить объекты singleObject.

Теперь я хочу прочитать этот RDD и получить сопоставленный RDD, который содержит данные из списка SingleTransformedObject.Как я могу это сделать?Некоторый код для начальных этапов выглядит следующим образом:

val filteredRDD = inputRDD.filter { case ((x, _), _) => x == "2321"}
  .map {case (key, exampleObject) =>
    exampleObject.getSetObjects1}

Теперь, после этого, я не уверен, как я могу разделить набор объектов на отдельные объекты и применить к каждому из них преобразование.

Не могли бы вы привести пример?

1 Ответ

0 голосов
/ 28 декабря 2018

Поскольку exampleObject.getSetObjects1, кажется, возвращает Set (или другое Collection), map приведет к RDD<Set<SetObjects1>>.На основании вопроса, я думаю, вы ищете RDD<SetObjects1>.В этом случае вам нужно flatMap вместо map.

val filteredRDD = inputRDD
    .filter { case ((x, _), _) => x == "2321" }
    .flatMap { case (key, exampleObject) => exampleObject.getSetObjects1 }
    .map { // code here to convert SetObject to SingleTransformedObject }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...