【问题标题】:Partitioning by multiple columns in Spark SQLSpark SQL中的多列分区
【发布时间】:2016-10-14 05:03:17
【问题描述】:

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

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

我目前没有测试环境(正在设置这个),但作为一个快速的问题,目前是否支持作为 Spark SQL 的窗口函数的一部分,或者这不会工作?

【问题讨论】:

    标签: apache-spark apache-spark-sql window-functions


    【解决方案1】:

    这行不通。第二个partitionBy 将覆盖第一个。必须在同一个调用中指定两个分区列:

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

    【讨论】:

      【解决方案2】:

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

      val partitioncolumns = List("a","b")
      val w = Window.partitionBy(partitioncolumns:_*).rangeBetween(-100, 0)
      

      通过在列表变量的末尾使用:_*,它将其转换为可变参数,这就是 partitionBy 采用的参数类型。所以你的代码会按照你想要的方式工作。

      【讨论】:

        猜你喜欢
        • 2021-12-22
        • 2016-03-06
        • 2020-10-11
        • 1970-01-01
        • 2015-06-18
        • 2015-05-05
        • 2022-10-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多