使用复合键在数据集上聚合
Aggregation on a Dataset with composite keys
我的输入数据集看起来像 ds[(T, U)]。其中 T 和 U 都如下所示。
T => (key1, key2, ...) and U => (value1, value2, ...)
聚合看起来像
ds.groupBy("key1", "key2", ...)
.agg(
sum("value1")).alias("value11"),
sum("value2")).alias("value22"),
...
.select("key1", "key2", ..., "value11", "value22", "fileId", ...)
这是最终输出。
在性能方面,是否有更好的方法通过使用 groupByKey/reduceGroups 或其他方法来实现相同的输出?
inout 数据集是通过处理行生成的。我们在一行中嵌套了对象,我们循环遍历以从每一行中提取键和值。将这两个过程结合在一起的有效方法是什么?自定义 UDAF 是否更适合这种情况?
就性能而言,这是最好的。使用静态类型 Dataset
和 groupByKey
/ reduceGroups
只会降低性能,或者充其量不会提供任何改进。
我的输入数据集看起来像 ds[(T, U)]。其中 T 和 U 都如下所示。
T => (key1, key2, ...) and U => (value1, value2, ...)
聚合看起来像
ds.groupBy("key1", "key2", ...)
.agg(
sum("value1")).alias("value11"),
sum("value2")).alias("value22"),
...
.select("key1", "key2", ..., "value11", "value22", "fileId", ...)
这是最终输出。 在性能方面,是否有更好的方法通过使用 groupByKey/reduceGroups 或其他方法来实现相同的输出?
inout 数据集是通过处理行生成的。我们在一行中嵌套了对象,我们循环遍历以从每一行中提取键和值。将这两个过程结合在一起的有效方法是什么?自定义 UDAF 是否更适合这种情况?
就性能而言,这是最好的。使用静态类型 Dataset
和 groupByKey
/ reduceGroups
只会降低性能,或者充其量不会提供任何改进。