簡體   English   中英

spark dataframe 中 orderBy 的列列表

[英]List of columns for orderBy in spark dataframe

我有一個包含列名的變量列表。 我正在嘗試使用它在 dataframe 上調用 orderBy。

val l = List("COL1", "COL2")
df.orderBy(l.mkString(","))

但是mkstring將列名組合為一個字符串,導致此錯誤 -

org.apache.spark.sql.AnalysisException: cannot resolve '`COL1,COL2`' given input columns: [COL1, COL2, COL3, COL4];

如何將此字符串列表轉換為不同的字符串,以便查找“COL1”、“COL2”而不是“COL1、COL2”? 謝謝,

您可以為特定列調用 orderBy:

import org.apache.spark.sql.functions._
df.orderBy(asc("COL1")) // df.orderBy(asc(l.headOption.getOrElse("COL1")))
// OR
df.orderBy(desc("COL1"))

如果要按多列排序,可以編寫如下內容:

val l = List($"COL1", $"COL2".desc)
df.sort(l: _*)

傳遞單個String參數是告訴 Spark 使用具有給定名稱的一列對數據框進行排序。 有一種方法可以接受多個列名,您可以這樣使用它:

val l = List("COL1", "COL2")
df.orderBy(l.head, l.tail: _*)

如果您關心訂單,請改用Column版本的orderBy

val l = List($"COL1", $"COL2".desc)
df.orderBy(l: _*)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM