Я сейчас на Spark 1.6, и мне интересно:
Скажем, у меня есть данные, которые связывают отделы с бизнес-единицами с менеджерами, продавцами и клиентами. Это одна таблица для каждого из них, хранящаяся в паркете и считываемая в фрейм данных.
Допустим, мне нужно кое-что в этих отношениях, например
- клиентов по менеджерам, клиентов по отделам и продавцов по отделам
Допустим также, что клиенты могут быть связаны с несколькими бизнес-единицами в отделе,
например. объединение их всех и группировка по отделам может привести к тому, что несколько клиентов будут связаны с каждым отделом. Таким образом, это также будет включать удаление дубликатов.
У меня есть несколько вопросов:
Оптимизирована ли искра там, где быстрее не делать промежуточные кадры данных, например было бы быстрее сделать Department.join (автобус
блок, ...). присоединиться (менеджер ...). присоединиться (продавец ...). присоединиться (клиент ...). GroupBy (DepartmentID, CUSTOMERID)
и сделать то же самое для отдела-> менеджер-> продавец, против делать один большой
один, против делать отдел-> автобусный отдел-> менеджер-> продавец, чтобы получить продавец по
отдел и затем присоединение клиента к этому, чтобы получить клиента отделом?
Быстрее ли просто объединить все эти данные в один фрейм данных и затем выполнить все мои операции над этим, или выполнить меньшие специальные операции, например было бы
Я хочу сделать отдел-> бизнес-единица-> менеджер-> продавец-> клиент
а затем групповой отдел и получить клиентов, групповой отдел и
получить продавцов и т. д. или я бы просто хотел сделать информационный блок
отдел-> бизнес-единица-> менеджер-> продавец, чтобы получить
отдел, а затем присоединить его к клиентам, чтобы получить клиентов по
отдел и т. д. ?
Быстрее ли, если бы я сделал большой полностью комбинированный фрейм данных, чтобы просто выбрать из него нужные мне столбцы, а затем сделать это, например, dep-> автобус
отдел-> менеджер-> продавец-> customer.select (идентификатор отдела, отдел
имя, CUSTOMERID, CUSTOMERNAME) .groupby (департамент
ID) .removeduplicates (идентификатор отдела, идентификатор клиента) или просто сделать
группировать и удалить дубликаты на главном кадре данных, а затем выберите
что я от этого хочу?