Spark dataframe orderBy с использованием переменной - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь сделать что-то подобное, но выдает ошибку. Как правильно сделать это, все еще используя переменную?

import org.apache.spark.sql._
....
val seq = Seq[Column](new Column("colX"), new Column("colY"), new Column("colZ"))
someDataFrame.orderBy(seq)

Я знаю, что можно также использовать что-то вроде orderBy("colX", "colY", "colZ"), но здесь я хочу использовать переменную, потому что моя последовательность заказов будет меняться при разных условиях.

Я получаю такую ​​ошибку.

error: overloaded method value orderBy with alternatives:
  (sortExprs: org.apache.spark.sql.Column*)org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] <and>
  (sortCol: String,sortCols: String*)org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]
 cannot be applied to (Seq[org.apache.spark.sql.Column])

1 Ответ

2 голосов
/ 18 июня 2019

Попробуйте, вы должны преобразовать ваш массив или список в последовательность значений (фактическая последовательность не Seq)

someDataFrame.orderBy(seq:_*)

Быстрый тест здесь:

1010 * ВХОДНОЙ *

df.show
+---+---+
| _1| _2|
+---+---+
|  c|  0|
|  b|  1|
|  a|  0|
+---+---+


val s = Seq(new Column("_1"), new Column("_2"))

df.orderBy(s:_*).show
+---+---+
| _1| _2|
+---+---+
|  a|  0|
|  b|  1|
|  c|  0|
+---+---+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...