2016-03-11 3 views
0

У меня есть вопрос о событиях времени разворота с помощью Spark и лучший способ справиться с этим.Массив RDD? Один RDD для временного окна

Таким образом, я глотаю очень большой набор данных с конкретным временем начала/остановки для каждого события.

Например, я могу загрузить данные через три недели. В основном окне времени я делю его на ведра меньших интервалов. Таким образом, 3 недели разделены на 24-часовые ведра, с массивом, который выглядит как [(start_epoch, stop_epoch), (start_epoch, stop_epoch), ...]

В течение каждого времени ведро я отображаю/уменьшаю свои события до меньший.

Я хочу, чтобы события были разделены на ведро, к которому они принадлежат.

Каков наилучший способ справиться с этим? Каждая операция отображения/уменьшения приводит к новому RDD, поэтому я фактически остаюсь с большим массивом RDD.

Действительно ли это «безопасно», чтобы просто перебрать этот массив из драйвера, а затем выполнить другие преобразования/действия на каждом RDD, чтобы получать результаты каждый раз окно?

Спасибо!

+0

Похоже, что это всего лишь очень маленький массив. Это должно быть хорошо. Почему бы просто не попробовать? – zsxwing

+0

Выполнение 1-часового бункера в течение 3-недельного периода составляет ~ 504 или 1, так что это много RDD в массиве. Я просто попробовал, казалось, работал нормально, до тех пор, пока я '.persist()' главный RDD, из которого производятся меньшие RDD. Таким образом, основной RDD не переустанавливается каждый раз. – myjay610

ответ

1

Я бы предложил подумать об этом несколько иначе: Вы хотите прочитать свои данные, а затем «KeyBy» с округлением до часа. И тогда вы можете уменьшитьByKey (или combByKey, если вы хотите получить другой тип на выходе).

При работе с искрой не нужно собирать элементы в массивы с помощью какого-то ключа (даже антипаттерн)

РДДА [Event] -> keyBy ц округляется до часа -> РДД [(час, событие)] -> reduceByKey (т.е. час) -> RDD [(час, агрегированный просмотр всех событий за этот час)]

+0

Это помогло! Да, я смог установить ключ на ближайший час (время - (время% 3600)), а затем оттуда! – myjay610

Смежные вопросы