窗口函数/scala/spark 1.6

Posted

技术标签:

【中文标题】窗口函数/scala/spark 1.6【英文标题】:Window functions / scala / spark 1.6 【发布时间】:2017-02-02 16:37:11 【问题描述】:

我想在 Scala 中使用窗口函数。

我有一个 CSV 文件,如下所示:

id;date;value1
1;63111600000;100
1;63111700000;200
1;63154800000;300

当我尝试在此数据框上应用窗口函数时, 有时有效,有时失败:

val df = loadCSVFile() 
val tw = Window.orderBy(date).partitionBy(id).rangeBetween(-5356800000,0) 
df.withColumn(value1___min_2_month, min(df.col("value1")).over(tw))
+---+-----------+--------------------+
| id|       date|value1___min_2_month|
+---+-----------+--------------------+
|  1|63111600000|                 100|
|  1|63111700000|                 100|
|  1|63154800000|                 100|
+---+-----------+--------------------+

所以它有效!但是当我尝试使用更大的数字(包含上一个示例的行)时,我得到以下结果

val tw = 

Window.orderBy(date).partitionBy(id).rangeBetween(-8035200000,0) \n
df.withColumn(value1___min_3_month, min(df.col("value1")).over(tw)) 
+---+-----------+--------------------+
| id|       date|value1___min_3_month|
+---+-----------+--------------------+
|  1|63111600000|                null|
|  1|63111700000|                null|
|  1|63154800000|                null|
+---+-----------+--------------------+

【问题讨论】:

【参考方案1】:

在您的号码后缀L

scala> -10000000000
<console>:1: error: integer number too large
-10000000000
 ^

scala> -10000000000L
res0: Long = -10000000000

【讨论】:

我的问题是这个数字实际上是在一个变量(长类型)中,并且有一个变量它不起作用 那么你只需传递变量。

以上是关于窗口函数/scala/spark 1.6的主要内容,如果未能解决你的问题,请参考以下文章

win32day03-窗口注册和创建

具有大量列的数据帧上的 Spark 窗口函数

是否可以从 Scala(spark) 调用 python 函数

Spark常用的算子以及Scala函数总结

Scala Spark groupBy/Agg 函数

如何更改 MATLAB 绘图图形的窗口标题?