使用复合键对数据集进行聚合

Posted

技术标签:

【中文标题】使用复合键对数据集进行聚合【英文标题】:Aggregation on a Dataset with composite keys 【发布时间】:2017-07-14 19:11:09 【问题描述】:

我的输入数据集看起来像 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 只会降低性能,或者最多不会提供任何改进。

【讨论】:

感谢您的评论。您对使用 UDAF 有何看法?这种场景适合 udaf 吗?

以上是关于使用复合键对数据集进行聚合的主要内容,如果未能解决你的问题,请参考以下文章

通过 h5py (HDF5) 写入具有可变长度字符串的复合数据集

科研进展人工智能和机器学习可以分析数据集,为新的复合材料提供组合

sql查询聚合与聚合和查询OLAP多维数据集的区别

在 BigQuery 中订购大型时间序列数据集以进行导出

使用 group by 或聚合函数删除变量

如何在 HDF5 C# 上创建复合数据集