我的输入数据集看起来像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
只会降低性能,或充其量只能提供任何改进。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句