В этой записи блога есть отличная информация по этому вопросу:
https://mapr.com/blog/tips-and-best-practices-to-take-advantage-of-spark-2-x/
Посмотрите на раздел под названием: Используйте лучшее хранилище данных для вашего варианта использования
Исходя из личного опыта, я предпочитаю использовать паркет в большинстве сценариев, потому что я обычно выписываю данные один раз, а затем читаю их много раз (для аналитики).
Что касается количества файлов, мне бы хотелось иметь от 200 до 1000.Это позволяет кластерам любого размера читать и писать параллельно, и позволяет эффективно считывать данные, потому что с паркетом я могу увеличивать только интересующий меня файл. Если у вас слишком много файлов, естьтонна накладных расходов при запоминании всех имен и местоположений файлов, и если у вас слишком мало файлов, он не сможет эффективно распараллелить ваши операции чтения и записи.
Размер файла, который я считаю менее важным, чем числофайлы при использовании паркета.
РЕДАКТИРОВАТЬ:
Вот хороший раздел из этого поста в блоге, который описывает, почему я люблю использовать паркет:
Apache Parquet обеспечивает самую высокую скорость чтения с помощью Spark.Parquet размещает данные в столбцах, размещая связанные значения в непосредственной близости друг к другу, чтобы оптимизировать производительность запросов, минимизировать ввод-вывод и упростить сжатие.Паркет обнаруживает и кодирует те же или похожие данные, используя технику, которая экономит ресурсы.Parquet также хранит метаданные и статистику столбцов, которые могут быть переданы для фильтрации столбцов (см. Ниже).Spark 2.x имеет векторизованный ридер Parquet, который выполняет распаковку и декодирование в пакетах столбцов, обеспечивая ~ 10x более высокую производительность чтения.