我该如何高效地读取托管在云 Blob 存储(例如 S3 / Azure Blob 存储)中的 parquet 文件的部分列呢?
parquet 文件格式的列式结构是其关键优势之一,因此选择性地读取列可以减少 I/O 负载。将数据存储在 Blob 存储中以在云上运行大规模工作负载也是很自然的。但是,一旦将 parquet 文件存储为 Blob,大多数库(dask、fastparquet、pyarrow)实际上无法利用它,因为底层的 fseek 不能直接在 Blob 上进行 - 这意味着无论选择哪些列,都必须先将整个文件下载到本地文件系统中才能读取。
因此,如果我的用例需要不同的应用程序需要不同的列,并且仅为了几列而下载整个文件的性能成本是不可接受的,那么最佳实践是什么?我应该为每个列存储不同的 parquet 文件,同时使用 pandas/dask 等在应用程序级别进行合并吗?Apache Parquet 格式是否具有通过列拆分数据集的内置支持 - 类似于 Hive 格式按分区划分然后按分区划分?
感谢任何帮助/使用 dask 或 fastparquet 的具体示例。
因此,如果我的用例需要不同的应用程序需要不同的列,并且仅为了几列而下载整个文件的性能成本是不可接受的,那么最佳实践是什么?我应该为每个列存储不同的 parquet 文件,同时使用 pandas/dask 等在应用程序级别进行合并吗?Apache Parquet 格式是否具有通过列拆分数据集的内置支持 - 类似于 Hive 格式按分区划分然后按分区划分?
感谢任何帮助/使用 dask 或 fastparquet 的具体示例。