当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python dask.dataframe.read_parquet用法及代码示例


用法:

dask.dataframe.read_parquet(path, columns=None, filters=None, categories=None, index=None, storage_options=None, engine='auto', gather_statistics=None, ignore_metadata_file=False, metadata_task_size=None, split_row_groups=None, chunksize=None, aggregate_files=None, **kwargs)

将 Parquet 文件读入 Dask DataFrame

这会将 Parquet 数据目录读入 Dask.dataframe,每个分区一个文件。如果存在,它会在已排序的列中选择索引。

参数

path字符串或列表

数据的源目录,或各个 parquet 文件的路径。使用 s3:// 之类的协议作为前缀,以从替代文件系统中读取。要从多个文件中读取,您可以传递一个 globstring 或路径列表,但需要注意的是它们都必须具有相同的协议。

columnsstr 或列表,默认无

作为输出中的列读入的字段名称。默认情况下,将读取所有非索引字段(由 pandas parquet 元数据确定,如果存在)。提供单个字段名称而不是列表以将数据作为系列读取。

filtersUnion[List[Tuple[str, str, Any]], List[List[Tuple[str, str, Any]]]],默认无

要应用的过滤器列表,例如 [[('col1', '==', 0), ...], ...] 。除非还指定了engine="pyarrow-dataset",否则使用此参数不会导致对最终分区进行逐行过滤。对于其他引擎,过滤仅在分区级别执行,即防止加载某些row-groups 和/或文件。

对于“pyarrow” 引擎,谓词可以用析取范式 (DNF) 表示。这意味着最里面的元组说明了一个单列谓词。这些内部谓词与 AND 连词组合成一个更大的谓词。然后,outer-most 列表将所有组合过滤器与 OR 分离组合。

谓词也可以表示为 List[Tuple]。这些被评估为 AND 连词。要在预测中表达 OR,必须使用(首选 “pyarrow”)List[List[Tuple]] 表示法。

请注意,“fastparquet” 引擎当前不支持使用 DNF 过滤分区列(需要 List[Tuple])。

indexstr,列表或假,默认无

用作输出帧索引的字段名称。默认情况下,将从 pandas parquet 文件元数据(如果存在)推断。使用 False 将所有字段读取为列。

categories列表或字典,默认无

对于此处列出的任何字段,如果 parquet 编码为 Dictionary,则将使用 dtype 类别创建列。仅当保证列在所有row-groups 中都被编码为字典时才使用。如果是列表,则假设最多 2**16-1 个标签;如果是 dict,请指定预期的标签数量;如果没有,将为 dask/fastparquet 写入的数据自动加载类别,否则不会。

storage_options字典,默认无

要传递到 file-system 后端的键/值对(如果有)。

open_file_options字典,默认无

当每个 parquet 数据文件打开以供读取时,要传递给 AbstractFileSystem.open 的键/值参数。可以通过在 "precache_options" 键下添加 {"method": "parquet"} 来启用远程文件系统(例如 S3、GCS)的实验性(优化)“precaching”。此外,可以使用自定义 file-open 函数(而不是 AbstractFileSystem.open ),方法是在 "open_file_func" 键下指定所需的函数。

enginestr,默认 ‘auto’

要使用的 Parquet 阅读器库。选项包括:‘auto’, ‘fastparquet’, and ‘pyarrow’。默认为 ‘auto’,如果安装了 fastparquet,则选择 FastParquetEngine(否则选择 ArrowDatasetEngine)。如果指定了‘pyarrow’,将使用 ArrowDatasetEngine(利用 pyarrow.dataset API)。注意:“pyarrow-legacy”选项 (ArrowLegacyEngine) 已弃用。

gather_statistics布尔值,默认无

收集每个数据集分区的统计信息。默认情况下,只有在 _metadata 文件可用时才会这样做。否则,只有在 True 时才会收集统计信息,因为每个文件的页脚都会被解析(这在某些系统上非常慢)。

ignore_metadata_file布尔值,默认为 False

是否忽略全局_metadata 文件(存在时)。如果 True 或全局 _metadata 文件丢失,则可以并行收集和处理镶木 floor 元数据。当前仅ArrowDatasetEngine 支持并行元数据处理。

metadata_task_sizeint,默认可配置

如果 parquet 元数据是并行处理的(参见上面的ignore_metadata_file 说明),则此参数可用于指定 Dask 图中每个任务要处理的数据集文件的数量。如果此参数设置为 0 ,将禁用并行元数据处理。可以分别使用“metadata-task-size-local” 和“metadata-task-size-remote” 配置字段指定本地和远程文件系统的默认值(请参阅“dataframe.parquet”)。

split_row_groupsbool 或 int,默认无

如果 _metadata 文件可用或数据集由单个文件组成,则默认为 True(否则默认为 False)。如果为 True,则每个输出数据帧分区将对应一个 parquet-file row-group。如果为 False,每个分区将对应一个完整的文件。如果给定一个正整数值,则每个数据帧分区将对应于该数量的镶木 floor row-groups(或更少)。

chunksizeint 或 str,默认无

每个输出DataFrame 分区的所需大小,以总(未压缩)镶木 floor 存储空间计。如果指定,相邻的 row-groups 和/或文件将被聚合到同一输出分区中,直到累积的 total_byte_size parquet-metadata 统计数据达到此值。使用aggregate_files 启用/禁用inter-file 聚合。

aggregate_filesbool 或 str,默认无

不同的文件路径是否可以聚合到相同的输出分区中。此参数需要 gather_statistics=True ,并且仅在指定 chunksizesplit_row_groups 为 >1 的整数时使用。 True 的设置意味着可以将任意两个文件路径聚合到同一个输出分区中,而 False 意味着禁止inter-file 聚合。

对于“hive-partitioned” 数据集,还可以指定“partition”-列名称。在这种情况下,我们允许聚合任何两个共享文件路径的文件,直到并包括相应的目录名称。例如,如果以下目录结构的aggregate_files设置为"section",则03.parquet04.parquet可以聚合在一起,但01.parquet02.parquet不能。但是,如果 aggregate_files 设置为 "region" , 01.parquet 可以与 02.parquet 聚合,并且 03.parquet 可以与 04.parquet 聚合:

dataset-path/
├── region=1/
│   ├── section=a/
│   │   └── 01.parquet
│   ├── section=b/
│   └── └── 02.parquet
└── region=2/
    ├── section=a/
    │   ├── 03.parquet
    └── └── 04.parquet

请注意,aggregate_files 的默认行为是 False。

**kwargs: dict (of dicts)

为读取后端传递 key-word 参数。顶级键对应于适当的操作类型,第二级对应于将传递给底层 pyarrowfastparquet 函数的 kwargs。支持的顶级键:‘dataset’(用于打开pyarrow数据集)、‘file’ or ‘dataset’(用于打开fastparquet.ParquetFile)、‘read’(用于后端读取函数)、‘arrow_to_pandas’(用于控制参数传递以从 pyarrow.Table.to_pandas() 转换)。任何未在这些顶级键下定义的 kwargs 元素都将作为 stand-alone 参数传递给 engine.read_partitions 类方法(并且将被 dask.dataframe 中定义的引擎实现忽略)。

例子

>>> df = dd.read_parquet('s3://bucket/my-parquet-data')

相关用法


注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.dataframe.read_parquet。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。