Я изучаю варианты для варианта использования, в котором мы сохраняем набор данных в виде файлов паркета и хотим выполнить эффективные запросы groupBy для определенного ключа позже, когда будем читать данные.
Я немного читал об оптимизациях для groupBy, но ничего особенного в этом не нашел (кроме RDD level reduByKey).
Я имею в виду, что если набор данных записан с ключом, который также будет использоваться в groupBy. Теоретически groupBy может быть оптимизирован, поскольку все строки, содержащие ключ, будут совмещены (и даже последовательно, если он также хранится, отсортированный по одному и тому же ключу).
Одна идея, которую я имею в виду, состоит в том, чтобы применить преобразование через mapPartitions, а затем groupBy, однако это потребует разбиения моих функций на две части, что не очень желательно. Я полагаю, что для некоторого класса функций (скажем, сумма / число) спарк оптимизировал бы запрос аналогичным образом, но оптимизация была бы инициирована выбором функции и работала бы независимо от совместного расположения строк. , но не из-за совместного размещения.
Может ли spark использовать совместное расположение строк для оптимизации groupBy с помощью любой последующей функции?