Arhn - архитектура программирования

Как я могу присоединиться к RDD[Rating] с scala.collection.Map[Int, Double] по ключевому столбцу?

У меня есть две таблицы ->

Таблица1: RDD[Рейтинг] (rdd1,rdd2,rdd3)

а также

таблица2: scala.collection.Map[Int, Double] (m1,m2)

Я потратил много времени и усилий, пытаясь сделать объединенную таблицу, как

(ключ (ключ = rdd2 = m1), rdd3, m2)

Но у меня всегда есть несоответствие типов.

Не могли бы вы дать совет, как с этим бороться? Я также пытаюсь преобразовать обе таблицы в один тип, но я уверен, что это не так...


Ответы:


1

Основываясь на том, что у вас есть RDD и Map, вы можете сделать это напрямую, повторяя свой RDD.

Предполагая, что Rating имеет 3 поля (rdd1,rdd2,rdd3), давайте переименуем их в field1, field2 и field3, чтобы сделать пример понятным и избежать путаницы.

Предоставление этого образца источника ввода:

case class Rating(field1: String, field2: Int, field3: String) // custom case class
val yourRDD = spark.sparkContext.parallelize(
  Seq(
    Rating("rating1", 1, "str1"), // item 1
    Rating("rating2", 2, "str2"), // item 2
    Rating("rating3", 3, "str3")  // item 3
  )
)
yourRDD.toDF.show() // to visualize()

это выведет ваш источник данных, который будет выглядеть так:

+-------+------+------+
| field1|field2|field3|
+-------+------+------+
|rating1|     1|  str1|
|rating2|     2|  str2|
|rating3|     3|  str3|
+-------+------+------+

Точно так же у вас есть эти образцы данных для вашей карты:

val yourMap = Map(
  1 -> 1.111,
  2 -> 2.222,
  3 -> 3.333
)
println(yourMap)

Данные на вашей карте:

yourMap: scala.collection.immutable.Map[Int,Double] = Map(1 -> 1.111, 2 -> 2.222, 3 -> 3.333)

Затем, чтобы «объединить», вам нужно всего лишь повторить RDD, получить значение, которое вы собираетесь использовать как key, в данном случае field2, и использовать его как key для map. Что-то вроде этого:

yourRDD
  .map(rating=>{ // iterate each item in your RDD
    val key = rating.field2 // get the value from the current item
    val valueFromMap = yourMap(key) // look for the value on the map using field2 as key - You need to handle null values in case that you wont have values for all the keys

    (key, rating.field3, valueFromMap) // generating an output for a new RDD that will be created based on this
}).toDF.show(truncate=false) // visualize the output

Приведенный выше код выведет:

+---+----+-----+
|_1 |_2  |_3   |
+---+----+-----+
|1  |str1|1.111|
|2  |str2|2.222|
|3  |str3|3.333|
+---+----+-----+

Надеюсь, это поможет

01.11.2019
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..