我有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());
添加回答
举报
0/150
提交
取消