Simon Bull
09/10/2026, 10:59 PMlazy_polars_dataset.
Abbreviated, this has:
if self._protocol == "file":
return pl.scan_parquet(load_path, **self._load_args)
return pl.scan_pyarrow_dataset(<something>)
But, for my GCS dataset, scan_parquet works, and is more reliable than scan_pyarrow_dataset. So the question is, why is scan_pyarrow_dataset favoured here? And, given that scan_parquet works fine for various cloud datasets (incl partitioned GCS parquet datasets), maybe there is a valid use-case for an option here to just use scan_parquet no matter the protocol?Simon Bull
09/11/2026, 2:11 AMscan_pyarrow_dataset
https://docs.pola.rs/api/python/stable/reference/api/polars.scan_pyarrow_dataset.html
> If scan_parquet() works for your source, you should use that instead.Jitendra Gundaniya
09/11/2026, 9:18 AMLazyPolarsDataset was originally implemented may be 2-3 years ago, native cloud reading for Parquet in Polars was newer and less established. PyArrow was therefore used for non-local files as the more established option.
Polars has moved on quite a bit since then, and as you pointed out, scan_parquet() now works directly with cloud-hosted and partitioned Parquet data, and Polars itself recommends using it when possible.
So yes, I think there's a reasonable case for supporting a native scan_parquet() path for cloud Parquet datasets, while retaining the existing PyArrow path for compatibility.
Would you be open to creating a GitHub issue, or even a draft PR, for this in kedro-plugins?Matthias Roels
09/11/2026, 11:49 AMscan_parquet You have to use Polars dtypes while with scan_pyarrow_dataset, you’ll have to use pyarrow dtypes, which adds confusion