А разве когда на паркетах без всего просто делаешь каунт, он так не делает? Там же вроде такая логика и есть - читает просто футеры и складывает
Для восстановления справедливости: да, так и делает. Паркетный ридер читает количество из футера всегда, сколько бы полей ни было в схеме, хоть все, хоть ни одного, иначе невозможно (или недопустимо сложно) корректно обработать паркет. Поэтому можно сказать, что если хотя бы одна колонка не указана в select, то читается не весь файл, а только его часть. Но потом всё равно Iterator, план спарка, аггрегация. Так что просто читать футеры в .mapPartitions и агрегировать одно только число будет всё же быстрее, но не очень-то универсально