Apache spark sparksql中的多列分区

Apache spark sparksql中的多列分区,apache-spark,apache-spark-sql,window-functions,Apache Spark,Apache Spark Sql,Window Functions,使用Spark SQL的窗口函数,我需要按多个列进行分区以运行数据查询,如下所示: val w=Window.partitionBy($“a”).partitionBy($“b”).rangeBetween(-100,0) 我目前没有测试环境(正在进行此设置),但作为一个简单的问题,Spark SQL的窗口函数目前支持此环境,还是不支持此环境?此环境不起作用。第二个分区将覆盖第一个分区。必须在同一调用中指定两个分区列: val w = Window.partitionBy($"a", $"b")

使用Spark SQL的窗口函数,我需要按多个列进行分区以运行数据查询,如下所示:

val w=Window.partitionBy($“a”).partitionBy($“b”).rangeBetween(-100,0)


我目前没有测试环境(正在进行此设置),但作为一个简单的问题,Spark SQL的窗口函数目前支持此环境,还是不支持此环境?

此环境不起作用。第二个分区将覆盖第一个分区。必须在同一调用中指定两个分区列:

val w = Window.partitionBy($"a", $"b").rangeBetween(-100, 0)

如果在执行partitionBy的多个位置使用列,则可以以列表的形式将其指定给变量,然后在代码中将该列表直接用作partitionBy的参数值

val partitioncolumns = List("a","b")
val w = Window.partitionBy(partitioncolumns:_*).rangeBetween(-100, 0)
通过在列表变量末尾使用
:*
将其转换为varargs,这是partitionBy采用的参数类型。因此,您的代码将按照您想要的方式工作