我試圖找到一個過濾器函式(采用一個 List 型別物件和一個函式 st 函式應該是輸入串列元素的型別并且應該回傳一個 bool 值,并且這兩個函式的過濾器的輸出包含原始串列函式在該元素上回傳 true 的元素)。
當我嘗試應用過濾器時,出現錯誤。有什么方法可以將過濾器應用于 RelationalGroupedDataset?(我在附件中找不到任何檔案:https ://spark.apache.org/docs/2.4.4/api/java/org/apache/spark/sql/RelationalGroupedDataset.html )
此外,對于我應該如何訪問 RelationalGroupedDataset 的特定列值是否有適當的表示法?
謝謝!
原始通話
錯誤資訊
uj5u.com熱心網友回復:
參考您的鏈接,RelationalGroupedDataset是“一組資料幀上的聚合方法,由 groupBy、cube 或 rollup(以及樞軸)創建”。
換句話說,它提供了一種將聚合函式(sum、min、max、avg 等)而不是過濾器應用于按某些鍵分組的記錄集的方法。
根據您需要過濾的內容 - 聚合之前的原始、未分組記錄或聚合函式的結果 - awhere()可以在之前groupBy()或之后應用agg()。在后一種情況下,它具有 SQL...GROUP BY ... HAVING ...查詢的語意。
uj5u.com熱心網友回復:
這是一個例子:
df.groupBy("department")
.agg(
sum("salary").as("sum_salary"),
avg("salary").as("avg_salary"),
sum("bonus").as("sum_bonus"),
max("bonus").as("max_bonus"))
.where(col("sum_bonus") >= 50000)
.show(false)
它應該給你指導。
uj5u.com熱心網友回復:
嘗試將:_*傳遞的 cols 添加到 groupBy 中:
def showGroupByDesc(df: DataFrame, cols: Column*): Unit = {
df.groupBy(cols:_*).count().sort($"count".desc).show()
}
它是一種特殊的語法,用于將引數傳遞給 scala 中的 varargs 函式。
沒有:_*編譯器正在尋找接受Seq[Column]但不會找到它的函式。
例如,您可以在此處閱讀有關使用 varargs 的函式的更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/491786.html
上一篇:在Spark中將字串轉換為向量
