我有两个带有两个不同时间序列数据的DataFrame。为简单起见,我们称之为Events
和Status
。
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小时内所有Row
个状态对象。
我可以通过events
和statuses
以及filter
的笛卡尔积来获得时间标准,但它(非常)效率低下。
有没有更好的方法呢?什么现成的?
(我想在时间窗口上对两个数据帧进行分组,然后自我加入第二个以包含当前和之前的时间窗口,然后在它们之间加入并过滤,但是如果有任何准备好和错误 - 免费,我很乐意使用...)
谢谢!
答案 0 :(得分:-1)
差不多2个月后,我觉得如果我发布的内容可能对其他人有所帮助:
http://zachmoshe.com/2016/09/26/efficient-range-joins-with-spark.html
它基本上是基于Timestamp或Numeric字段(Scala,使用Spark 2.0)在两个DataSet之间实现范围连接的更有效实现。