为了账号安全,请及时绑定邮箱和手机立即绑定

Spark Java中多列的聚合

Spark Java中多列的聚合

炎炎设计 2021-09-12 14:36:20
我有priceColumns动态的列列表。我正在尝试聚合数据集中的这些列,public Dataset getAgg(RelationalGroupedDataset rlDataset){Dataset selectedDS=null;    for(String priceCol :priceColumns){            selectedDS=rlDataset.agg(expr("sum(cast("+priceCol+" as BIGINT))"));        }return selectedDS;}上面的代码是一个不正确的代码,我在这里尝试做的是,基于每个列存在,聚合应该为该数据集发生,我如何编写通用代码?我完全被困在这里。
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

我用下面的方式尝试过,它解决了。

List<Column> columnExpr = priceColumns.stream()
                             .map(col->expr("sum(cast("+col+" as BIGINT))").as(col))
                             .collect(Collectors.toList());

然后,

selectedDS= rlDataset
                    .agg(columnExpr.get(0),
                JavaConverters.asScalaIteratorConverter(columnExpr.subList(1, columnExpr.size())
                    .iterator()).asScala().toSeq());


查看完整回答
反对 回复 2021-09-12
  • 1 回答
  • 0 关注
  • 245 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信