Каковы некоторые полезные случаи использования метода Reduce в наборе данных - PullRequest
0 голосов
/ 09 февраля 2019

Какие могут быть полезные случаи использования метода reduce в Dataset.

У меня есть следующая таблица

DEST_COUNTRY_NAME   ORIGIN_COUNTRY_NAME count
United States       Romania             15
United States       Croatia             1
United States       Ireland             344
Egypt               United States       15  

Таблица представлена ​​в виде набора данных.

scala> dataDS
res187: org.apache.spark.sql.Dataset[FlightData] = [DEST_COUNTRY_NAME: string, ORIGIN_COUNTRY_NAME: string ... 1 more field]

Я не могу вспомнить ни одного полезного сценария использования метода reduce в dataDS.Я предполагаю, что метод reduce выберет две строки (представленные как FlightData) и выполнит в нем некоторую операцию, которая должна быть математически ассоциативной и кумулятивной, а результат должен быть FightData

(func: (FlightData, FlightData) => FlightData)FlightData

Возможно, приведенная выше таблица не соответствует цели reduce.Какой тип данных тогда будет соответствовать reduce?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Набор данных статически набирается из класса FlightData в этом вопросе.Таким образом, вы можете использовать scala императивный функциональный способ, например, уменьшить, сгруппировать по ключу.Основное преимущество - Spark автоматически сериализует ваш класс дел.Например, вы можете использовать функции Scala map, reduce и foldleft для применения агрегации или преобразования к вашему набору данных.

val totalSum = dataDS.map(_.count).reduce(_+_)
0 голосов
/ 09 февраля 2019

Полагаю, я могу использовать reduce, когда хочу добавить или умножить весь столбец.Например, скажем, я хочу суммировать все значения столбца count.

scala> (dataDS.select(col("count").as[Int])).reduce((acc,n)=>acc+n);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...