Мои данные могут существовать в РДУ двух формах, либоДля искры, какова самая быстрая структура данных, чтобы уменьшить ее? Карты или списки кортежей?
RDD[Map[String, Map[String, Int]]]
или
RDD[List[(String, List[(String,Int)])]]
Как вы можете видеть, во втором примере «отображение» данных предписана первым элементом кортежа является ключ. Рассмотрим две записи в моем rdd, назовите их R1 и R2. Я буду объединять ключи в R1 и R2. Когда R1 и R2 содержат один и тот же ключ, я делаю дальнейшее объединение этих значений. В качестве примера, скажем, что оба R1 и R2 содержат запись
outer_key1 -> (inner_key1 -> 1)
затем полученное слияние будет производить
outer_key1 -> (inner_key1 -> 2)
Итак, мой вопрос, какой структура данных быстрее и больше памятей эффективным для искры, чтобы уменьшить внешний и внутренний ключ? Карты карт или списки (key, list_of_tuple). Моя интуиция заключается в том, что карты будут быстрее сокращаться по ключу, учитывая их поиск 0 (1). Однако, учитывая то, как большинство карт реализовано, я уверен, что на карте RDDS есть приличная сумма потерянной памяти.
Как реальный пример такого рода объединения, мои РДУ представляют
Map(email_address->(date->number_of_emails_recieved_that_day)) where each RDD contains many email addresses
В зависимости от того, хотите ли вы иметь доступ к 'findByKey' или' sequentialAccess' над вашими внутренними данными. –
И ваш RDD является 'RDD [T]' где 'T' является' Map [String, Map [String, Int]] '. Это не 'RDD [(K, T)]', так что вы подразумеваете под 'Key' ?? –