Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Scala Spark中使用窗口延迟来发现变化_Scala_Apache Spark - Fatal编程技术网

如何在Scala Spark中使用窗口延迟来发现变化

如何在Scala Spark中使用窗口延迟来发现变化,scala,apache-spark,Scala,Apache Spark,我的数据集如下所示: +----+------+ |day | count| +----+------+ | 1| 50| | 2| 55| | 3| 53| +----+------+ +----+------+-------+ |day | count| delta | +----+------+-------+ | 1| 50| 0| | 2| 55| 5| | 3| 53| -2| +----+--

我的数据集如下所示:

+----+------+
|day | count|
+----+------+
|   1|    50|
|   2|    55|
|   3|    53|
+----+------+
+----+------+-------+
|day | count| delta |
+----+------+-------+
|   1|    50|      0|
|   2|    55|      5|
|   3|    53|     -2|
+----+------+-------+
我想要一张这样的桌子:

+----+------+
|day | count|
+----+------+
|   1|    50|
|   2|    55|
|   3|    53|
+----+------+
+----+------+-------+
|day | count| delta |
+----+------+-------+
|   1|    50|      0|
|   2|    55|      5|
|   3|    53|     -2|
+----+------+-------+
我对Scala非常陌生,这就是我正在尝试的,但这是错误的。我的
上一次计数
为空

myDf.withColumn("prev_count", lag("count", 1)
              .over(Window.partitionBy("day")
              .orderBy("day"))).show()

val result = myDf.withColumn("change",
                            (myDf("count") - myDf("prev_count"))).show()

非常感谢指针。

看起来您没有使用新列:

val withPrevcount = myDf.withColumn("prev_count", lag("count", 1).over(Window.partitionBy("day").orderBy("day")))

val result = withPrevcount.withColumn("change", col("count") - col("prev_count")))

result.show()

你是对的,我没有使用新的专栏,但是我仍然没有在“prev_count”专栏中得到任何东西。运行第一行后为空:“val withPrevcount=myDf.withColumn(“prev_count”),lag(“count”,1)。over(Window.partitionBy(“day”)。orderBy(“day”))”@b-ryce我想应该是
col(“count”)-col(“prev_count”)
——检查这是否解决了您的问题。如果没有,那么就针对您的新问题提出一个新问题可能是个好主意:我对spark的了解还不够,除了基础知识之外,无法进行调试。