0

我的输入数据集看起来像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会更适合这种情况吗?

回答

1

就性能而言,这是一样好。使用静态类型DatasetgroupByKey/reduceGroups只能降低性能,或者至多没有提供任何改进。

+0

感谢您的评论。您对使用UDAF有什么看法?这种情况适用于udaf吗? – subhodip