【发布时间】:2018-10-23 12:17:14
【问题描述】:
当我使用 DF 的列名作为参数时,使用 .GroupByKey 和 .GroupBy 的根本区别是什么?
哪一个是时间效率高的,每一个到底是什么意思,有人可以详细解释一下,因为我浏览了一些示例,但令人困惑。
【问题讨论】:
标签: scala apache-spark apache-spark-sql
当我使用 DF 的列名作为参数时,使用 .GroupByKey 和 .GroupBy 的根本区别是什么?
哪一个是时间效率高的,每一个到底是什么意思,有人可以详细解释一下,因为我浏览了一些示例,但令人困惑。
【问题讨论】:
标签: scala apache-spark apache-spark-sql
没有将Column 作为参数的groupByKey 方法。有一些方法可以使用函数:
def groupByKey[K](func: MapFunction[T, K], encoder: Encoder[K]): KeyValueGroupedDataset[K, T]
或
def groupByKey[K](func: (T) ⇒ K)(implicit arg0: Encoder[K]): KeyValueGroupedDataset[K, T]
与采用Columns 的groupBy 相比:
def groupBy(cols: Column*): RelationalGroupedDataset
或String
def groupBy(col1: String, cols: String*): RelationalGroupedDataset
区别应该很明显 - 前两个返回 KeyValueGroupedDataset(用于处理“功能”、“强类型 API,如 mapGroups 或 reduceGroups), while the later methods returnRelationalGroupedDataset`(用于处理类似 SQL 的 API) .
一般见:
【讨论】: