Мы можем определить 2 различных уровней детализации для создания индексов: индекс на основе файла URI или индекса на основе InputSplit. Давайте возьмем два разных примера набора данных.
индекс
В this первого примера 2 файл в наборе данных помещается в 25 блоках, и был идентифицирован как 7 различных InputSplits. Цель, которую вы ищете (выделенная серым цветом) доступна в файле № 1 (блок № 2, № 8 и № 13), а в файле № 2 (блок № 17)
С индексированием на основе файлов вы закончите (полный набор данных здесь), что означает, что ваш проиндексированный запрос будет эквивалентен полному запросу сканирования. С индексированием на основе InputSplit вы получите 4 InputSplits на 7 доступных. Производительность должна быть определенно лучше, чем полный запрос сканирования индекс
Давайте рассмотрим пример second. На этот раз один и тот же набор данных был отсортирован по столбцу, который вы хотите индексировать. Цель, которую вы ищете (выделенная серым цветом), теперь доступна в файле # 1 (блок № 1, № 2, № 3 и № 4).
С индексацию на основе файла, вы будете в конечном итоге только один файл из набора данных С индексации на основе InputSplit, вы будете в конечном итоге с 1 InputSplit 7 доступных Для этого конкретного исследования, я решил использовать пользовательские InputSplit основанный индекс. Я считаю, что такой подход должен быть довольно хорошим балансом между усилиями, которые он предпринимает для реализации, добавленной стоимостью, которую он может принести с точки зрения оптимизации производительности, и его ожидаемой применимостью, независимо от распределения данных.