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

Карта Spark — это только одна задача, хотя она должна быть параллельной (PySpark)

У меня есть RDD с около 7M записей с 10 нормализованными координатами в каждой. У меня также есть несколько центров, и я пытаюсь сопоставить каждую запись с ближайшим центром (евклидово расстояние). Проблема в том, что это генерирует только одну задачу, что означает, что она не распараллеливается. Это форма:

def doSomething(point,centers):
    for center in centers.value:
        if(distance(point,center)<1):
             return(center)
    return(None)

preppedData.map(lambda x:doSomething(x,centers)).take(5)

СДР preppedData кэшируется и уже оценивается, функция doSomething представлена ​​намного проще, чем она есть на самом деле, но принцип тот же. Центры - это список, который был передан в эфир. Почему эта карта только в одном задании?

Подобные фрагменты кода в других проектах просто сопоставляются с +- 100 задачами и запускаются на всех исполнителях, в этом случае 1 задача на 1 исполнителе. В моей работе есть 8 исполнителей с 8 ГБ и 2 ядрами на исполнителя.


  • Сколько заданий вы получите, если принудительно просмотрите все записи, например, с preppedData.map(lambda x:doSomething(x,centers)).count()? Сколько разделов у вашего RDD (preppedData.getNumPartitions())? 13.01.2016
  • Насколько велик ваш файл с 7 миллионами записей? 13.01.2016
  • sgvd, который мог бы это исправить, но обычно он по-прежнему правильно разбивает его, когда я использую небольшой take. Завтра проверю количество разделов. 13.01.2016
  • Раду, не знаю, это не из файла, это из относительно большого пайплайна. Он имеет 2 идентификационных столбца, 3 столбца со списками длиной от 1 до 1000 (большинство из них небольшие), а затем 10 координат, которые я передаю функции. 13.01.2016

Ответы:


1

Это может быть связано с консервативным характером метода take(). см. код в RDD.scala.

Что он делает, так это сначала берет первый раздел вашего RDD (если ваш RDD не требует перетасовки, для этого потребуется только одна задача), и если в этом разделе достаточно результатов, он вернет его. Если в вашем разделе недостаточно данных, он будет увеличивать количество разделов, которые он пытается взять, пока не получит необходимое количество элементов.

Поскольку ваш RDD уже кэширован, а ваша операция представляет собой только функцию сопоставления, до тех пор, пока любой из ваших RDD имеет> 5 строк, для этого потребуется только одна задача. Больше задач было бы не нужно.

Этот код существует для того, чтобы избежать перегрузки драйвера слишком большим количеством данных путем выборки из всех разделов одновременно для небольшого дубля.

13.01.2016
  • Да дело в этом закончилось. Странно то, что с тем, как я делаю анализ (в интерактивном режиме), подобные ситуации возникали регулярно, но это первый раз, когда мне дали только 1 задание. 15.01.2016
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге 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 , и использованием..

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