2016-09-02 2 views
1

У меня есть два DataFrames с двумя различными данными временного ряда. Для простоты назовем их Events и Status.Как эффективно сочетать 2 DateFrames на основе временной отметки?

events: 
root 
|-- timestamp: timestamp (nullable = true) 
|-- event_type: string (nullable = true) 
|-- event_id: string (nullable = true) 

statuses: 
root 
|-- timestamp: timestamp (nullable = true) 
|-- status: string (nullable = true) 
|-- field1: string (nullable = true) 
|-- field2: string (nullable = true) 
|-- field3: string (nullable = true) 

Я хотел бы присоединиться к ним так каждый Event будет иметь столбец list_statuses, который содержит все объекты статусов в предыдущих X часов своей собственной временной метки.

Я могу сделать это декартовым произведением events и statuses, а затем filter по критериям времени, но это (крайне) неэффективно.

Есть ли лучший способ сделать это? Что-нибудь готово?

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

Спасибо!

ответ

0

Почти 2 месяца спустя, но я думал, что это может помочь другим, если я отправляю кое-что я получил:

http://zachmoshe.com/2016/09/26/efficient-range-joins-with-spark.html

Это в основном более эффективная реализация диапазона-соединения между двумя DataSets на основе Timestamp или числовое поле (Scala, Spark 2.0).

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