是否有一种快速简便的方法来获得列的两个单行之间的差异?

时间:2015-09-23 16:33:28

标签: sql apache-spark apache-spark-sql spark-dataframe

我有一个类似于:

的数据框
SPAN     AVAILABLE     TIMESTAMP
1-3 O        TRUE          0
1-2 O        FALSE         0
1-3 A        FALSE         0
1-2 A        FALSE         0
1-3 O        FALSE         6
1-2 O        TRUE          6
...           ...         ...

我想找到任何跨度的第一个和第二个时间戳之间的差异 - 只是为了知道数据的(常规)周期。我知道它总是在同一时期。

使用Spark的DataFrame API还是SQL有一种简单的方法吗?

1 个答案:

答案 0 :(得分:1)

如果你知道你的所有数据都有相同的时间段,并且第一个跨度至少有两个数据点,那么我会建议类似下面的内容(在Scala中,未经测试):

val firstSpan = df.head()(0)
val twoRows = df.filter("SPAN ='"+firstSpan+"'").orderBy("TIMESTAMP").take(2)
val period = twoRows(1).getInt(2)-twoRows(0).getInt(2)

我们过滤到一个跨度,我们订购数据集以确保我们有相邻的点,取前两个,并减去它们。