dask.dataframe.to_parquet

dask.dataframe.to_parquet

dask.dataframe.to_parquet(df, path, engine='auto', compression='snappy', write_index=True, append=False, overwrite=False, ignore_divisions=False, partition_on=None, storage_options=None, custom_metadata=None, write_metadata_file=None, compute=True, compute_kwargs=None, schema='infer', name_function=None, filesystem=None, **kwargs)[源代码]

将 Dask.dataframe 存储到 Parquet 文件

参数
dfdask.dataframe.DataFrame
路径字符串或 pathlib.Path

数据的目标目录。对于远程数据,请在前面加上协议,如 s3://hdfs://

引擎{‘auto’, ‘pyarrow’}

要使用的 Parquet 库。默认为 ‘auto’,如果安装了 pyarrow,则使用它,否则回退到已弃用的 fastparquet。请注意,fastparquet 不支持 pyarrow 提供的所有功能。第三方包(例如 CuDF)也使用此选项来注入自定义引擎。

压缩字符串或字典,默认值为 ‘snappy’

可以是像 "snappy" 这样的字符串,或者是将列名映射到压缩器的字典,例如 {"name": "gzip", "values": "snappy"}。默认为 "snappy"

写入索引布尔值,默认值为 True

是否写入索引。默认为 True。

追加bool, 默认 False

如果为 False(默认),则从头构建数据集。如果为 True,则向现有数据集添加新的行组。在后一种情况下,数据集必须存在,并且模式必须与输入数据匹配。

覆盖bool, 默认 False

是否在写入数据集之前删除 path 的内容。默认值为 False。如果为 True,指定的路径必须对应一个目录(但不能是当前工作目录)。如果 append=True,则不能将此选项设置为 True。注意:即使当前写操作失败,overwrite=True 也会删除原始数据。请自行承担使用风险。

忽略部分bool, 默认 False

如果为 False(默认),当先前的分区与新追加的分区重叠时会引发错误。如果 append=False,则忽略此设置。

partition_on列表,默认 None

通过在这些字段的值上进行拆分来构建基于目录的分区。每个dask分区将产生一个或多个数据文件,不会有全局分组。

存储选项dict, 默认 None

如果有的话,传递给文件系统后端的键/值对。

自定义元数据dict, 默认 None

自定义键/值元数据,包含在所有页脚元数据中(如果适用,还包含在全局“_metadata”文件中)。请注意,自定义元数据不能包含保留的 b”pandas” 键。

write_metadata_file布尔值或无,默认无

是否编写特殊的 _metadata 文件。如果为 None (默认),则只有在 append=True 且数据集已经有一个 _metadata 文件时,才会编写 _metadata 文件。

计算bool, 默认 True

如果 True``(默认),则立即计算结果。如果 ``False,则返回一个 dask.dataframe.Scalar 对象以供将来计算。

compute_kwargs字典, 默认 True

传递给计算方法的选项

模式pyarrow.Schema, dict, “infer”, 或 None, 默认 “infer”

用于输出数据集的全局模式。默认为“infer”,将从dask dataframe元数据中推断模式。这通常足以满足常见的模式,但特别地,对于包含非字符串的``object`` dtype列将失败。这些列将需要指定显式模式。可以通过传递列名到pyarrow类型的字典来覆盖部分列的模式(例如``schema={“field”: pa.string()}``);此字典中不存在的列仍将自动推断。或者,可以传递完整的``pyarrow.Schema``,在这种情况下不会进行模式推断。传递``schema=None``将禁用全局文件模式的使用 - 每个写入的文件可能使用不同的模式,具体取决于相应分区的dtypes。

name_function可调用对象,默认为 None

用于生成每个输出分区文件名的函数。该函数应接受一个整数(分区索引)作为输入,并返回一个字符串,该字符串将用作相应分区的文件名。应保持分区字典序。如果未指定,文件将使用约定 part.0.parquetpart.1.parquetpart.2.parquet 等为 DataFrame 中的每个分区创建。

文件系统: 使用“fsspec”、“arrow”或 fsspec.AbstractFileSystem 后端。
**kwargs

传递给特定后端的额外选项。

参见

read_parquet

读取 parquet 数据到 dask.dataframe

注释

每个分区将被写入一个单独的文件。

示例

>>> df = dd.read_csv(...)  
>>> df.to_parquet('/path/to/output/', ...)  

默认情况下,文件将使用约定 part.0.parquetpart.1.parquetpart.2.parquet 等在指定的输出目录中创建,每个分区对应一个文件。要自定义每个文件的名称,可以使用 name_function= 关键字参数。传递给 name_function 的函数将用于为每个分区生成文件名,并且应该期望输入一个分区的索引整数并返回一个字符串,该字符串将用作相应分区的文件名。name_function 生成的字符串必须保持其各自分区索引的顺序。

例如:

>>> name_function = lambda x: f"data-{x}.parquet"
>>> df.to_parquet('/path/to/output/', name_function=name_function)  

将导致以下文件被创建:

/path/to/output/
    ├── data-0.parquet
    ├── data-1.parquet
    ├── data-2.parquet
    └── ...