Мне нужно выполнить простую группировку данных в Spark (Scala). В частности, это мой исходные данные:Эффективная группировка данных в Spark
1, a, X
1, b, Y
2, a, Y
1, a, Y
val seqs = Seq((1, "a", "X"),(1, "b", "Y"),(2, "a", "Y"),(1, "a", "Y"))
Мне нужно сгруппировать его по первому ключу следующим образом:
1, (a, X), (b, Y), (a, Y)
2, (a, Y)
Мой первоначальный IDIA был использовать DataFrame
и groupBy
, но я читал, что это операция очень дорогостоящая и требует полной перестановки всех данных.
Итак, что является менее дорогостоящим вариантом для группировки? Будет дан конкретный пример.
но группа именно то, что вы хотели - и параллельная обработка - это сила искры, поэтому вы можете делать groupBy в RDD или Dataframe. Альтернативой является сокращение, которое намного более эффективно, но проблема в том, что в конце вы остаетесь с 1 парой значений ключа для каждой группы. – GameOfThrows
Вы не можете группировать вещи по разделам, не делая тасование. Подумайте, куда нужно идти. Это дорого, потому что это обязательно дорого. –