Как выполнить агрегацию (например, Sum, Avg, ...) по нескольким столбцам содержимого файла CSV? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть файл CSV, который содержит несколько столбцов (идентификаторы и числовые значения). Я хочу выполнить некоторые базовые статистические данные по числовым переменным (я новичок в Apache Beam). Мне удалось выполнить сумму по паре ключ-значение. И после этого мне было интересно, как я могу расширить следующий класс, чтобы сделать это для нескольких значений одновременно.

public static class ExtractAndSumScore
            extends PTransform<PCollection<ChargesInfo>, PCollection<KV<String, Integer>>> {

        @Override
        public PCollection<KV<String, Integer>> expand(PCollection<ChargesInfo> gameInfo) {

            return gameInfo
                    .apply(
                            MapElements.into(
                                    TypeDescriptors.kvs(TypeDescriptors.strings(), TypeDescriptors.integers()))
                                    .via((ChargesInfo cInfo) -> KV.of(cInfo.getProviderID(), cInfo.getTotalDischarges())))
                    .apply(Sum.integersPerKey());
        }
    }

Я ожидаю напечатать файл, содержащий сумму по ключу, по нескольким столбцам.

id0 total amount: 300 total score: 10
id1 total amount: 100 total score: 20
id2 ..
id3 ..
...
...