如何根据时间戳差异有效地加入2个DateFrame?

时间:2016-09-02 14:57:27

标签: pyspark apache-spark-sql

我有两个带有两个不同时间序列数据的DataFrame。为简单起见,我们称之为EventsStatus

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个状态对象。

我可以通过eventsstatuses以及filter的笛卡尔积来获得时间标准,但它(非常)效率低下。

有没有更好的方法呢?什么现成的?

(我想在时间窗口上对两个数据帧进行分组,然后自我加入第二个以包含当前和之前的时间窗口,然后在它们之间加入并过滤,但是如果有任何准备好和错误 - 免费,我很乐意使用...)

谢谢!

1 个答案:

答案 0 :(得分:-1)

差不多2个月后,我觉得如果我发布的内容可能对其他人有所帮助:

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

它基本上是基于Timestamp或Numeric字段(Scala,使用Spark 2.0)在两个DataSet之间实现范围连接的更有效实现。

相关问题