Возможно, это не было ясно из строки документации, но разделение по значению просто не происходит для «простого» типа файла, поэтому он имеет только один раздел.
Что касается скорости, чтение данные в одном вызове функции выполняются быстрее всего, когда данные настолько малы, особенно если вы намереваетесь выполнить какую-либо операцию, например nunique
, которая потребует комбинации значений из разных разделов.
В Dask каждая задача сопряжена с дополнительными издержками, поэтому, если объем работы, выполняемой вызовом, не будет большим по сравнению с этими издержками, вы можете проиграть. Кроме того, доступ к диску обычно не распараллелен, и некоторые части вычислений могут не работать параллельно в потоках, если они содержат GIL. Наконец, , секционированная версия содержит больше метаданных паркета, которые нужно проанализировать.
>>> len(dd.read_parquet('test_hive.parquet').name.nunique())
12
>>> len(dd.read_parquet('test_simple.parquet').name.nunique())
6
TL; DR: убедитесь, что ваши разделы достаточно велики, чтобы занять работу.
(примечание: набор уникальных значений уже очевиден из метаданных паркета, загрузка данных вообще не требуется; но Dask не знает, как выполнить эту оптимизацию, поскольку, в конце концов, некоторые из разделов могут содержит ноль строк)