WedX - журнал о программировании и компьютерных науках

Как разделить большой фрейм данных и использовать более мелкие части для выполнения нескольких широковещательных соединений в Spark?

Допустим, у нас есть два очень больших кадра данных — A и B. Теперь я понимаю, что если я использую один и тот же разделитель хэшей для обоих RDD, а затем выполняю соединение, ключи будут совмещены, и соединение может быть быстрее с уменьшением перетасовки ( единственная перетасовка, которая произойдет, будет, когда разделитель изменится на A и B).

Я хотел попробовать что-то другое - я хочу попробовать широковещательное соединение вот так -> скажем, B меньше, чем A, поэтому мы выбираем B для трансляции, но B по-прежнему очень большой кадр данных. Итак, что мы хотим сделать, так это сделать несколько фреймов данных из B, а затем отправить каждый в виде широковещательной рассылки для объединения в A.

Кто-нибудь пробовал это? Чтобы разделить один фрейм данных на несколько, я вижу только метод randomSplit, но это не очень хороший вариант.

Есть ли другой лучший способ выполнить эту задачу?

Спасибо!

11.12.2017

Ответы:


1

Кто-нибудь пробовал это?

Да кто-то уже пробовал. В частности, GoDataDriven. Вы можете найти подробности ниже:

Они заявляют о довольно хороших результатах для искаженных данных, однако есть три проблемы, которые вы должны учитывать при самостоятельном выполнении:

  • В Spark нет разделения. Вы должны фильтровать данные несколько раз или активно кэшировать полные разделы (Как разделить RDD на два или более RDD?) имитировать «расщепление».
  • Огромным преимуществом вещания является уменьшение объема передаваемых данных. Если данные большие, то объем передаваемых данных может значительно увеличиться: (Почему мой BroadcastHashJoin медленнее, чем ShuffledHashJoin в Spark)
  • Каждое «объединение» увеличивает сложность плана выполнения, а с длинной серией преобразований все может стать очень медленным на стороне драйвера.

randomSplit, но это не очень хороший вариант.

Это на самом деле не плохо.

Есть ли другой лучший способ выполнить эту задачу?

Вы можете попробовать отфильтровать по идентификатору раздела.

11.12.2017
  • Вы пробовали итеративное широковещательное соединение? Или вы просто скопировали ссылку сюда 16.12.2018
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]