Как применить несколько столбцов в окне PartitionBy в Spark Scala - PullRequest
0 голосов
/ 17 июня 2019
val partitionsColumns = "idnum,monthnum"
val partitionsColumnsList = partitionsColumns.split(",").toList
val loc = "/data/omega/published/invoice"
val df = sqlContext.read.parquet(loc)
val windowFunction = Window.partitionBy  (partitionsColumnsList:_*).orderBy(df("effective_date").desc)
<console>:38: error: overloaded method value partitionBy with alternatives:
(cols: org.apache.spark.sql.Column*)     org.apache.spark.sql.expressions.WindowSpec <and>
(colName: String,colNames: String*)org.apache.spark.sql.expressions.WindowSpec
cannot be applied to (String)
val windowFunction = Window.partitionBy(partitionsColumnsList:_*).orderBy(df("effective_date").desc)

Можно ли отправить список столбцов в метод partitionBy Spark / Scala?

Я реализовал передачу одного столбца в метод partitionByкоторый работал.Я не знаю, как передать несколько столбцов в partitionBy метод

в основном я хочу передать List(Columns) в partitionBy метод

Версия Spark - 1.6.

1 Ответ

3 голосов
/ 17 июня 2019

Window.partitionBy имеет следующие определения:

static WindowSpec partitionBy(Column... cols) Creates a WindowSpec

с определенным разделением.

static WindowSpec partitionBy(scala.collection.Seq<Column> cols)

Создает WindowSpec с определенным разделением.

static WindowSpec partitionBy(String colName, scala.collection.Seq<String> colNames) 

Создает WindowSpec с определенным разделением.

static WindowSpec partitionBy(String colName, String... colNames)

Создает WindowSpec с определенным разделением.

На вашем примере

val partitionsColumnsList = partitionsColumns.split(",").toList

Вы можете использовать его как:

Window.partitionBy(partitionsColumnsList.map(col(_)):_*).orderBy(df("effective_date").desc)

или

Window.partitionBy(partitionsColumnsList.head, partitionsColumnsList.tail _* ).orderBy(df("effective_date").desc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...