![](/img/trans.png)
[英]Spark dataframe orderby using many columns in scala
[英]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.