Агрегация нескольких столбцов в spark java

У меня есть список столбцов 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
0
452
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я попытался использовать способ ниже, и он решил.

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());

Другие вопросы по теме