ray.data.Dataset.write_json#

Dataset.write_json(path: str, *, filesystem: pyarrow.fs.FileSystem | None = None, try_create_dir: bool = True, arrow_open_stream_args: Dict[str, Any] | None = None, filename_provider: FilenameProvider | None = None, pandas_json_args_fn: Callable[[], Dict[str, Any]] | None = None, num_rows_per_file: int | None = None, ray_remote_args: Dict[str, Any] = None, concurrency: int | None = None, **pandas_json_args) None[源代码]#

Dataset 写入 JSON 和 JSONL 文件。

文件的数量由数据集中的块数决定。要控制块的数量,请调用 repartition()

此方法仅支持记录可转换为 pandas 数据框的数据集。

默认情况下,输出文件的格式为 {uuid}_{block_idx}.json,其中 uuid 是数据集的唯一标识符。要修改此行为,请实现自定义的 FilenameProvider 并将其作为 filename_provider 参数传递。

备注

此操作将触发对此数据集执行的延迟转换。

示例

将数据集写入本地目录的JSON文件。

>>> import ray
>>> import pandas as pd
>>> ds = ray.data.from_pandas([pd.DataFrame({"one": [1], "two": ["a"]})])
>>> ds.write_json("local:///tmp/data")

将数据集写入本地目录的 JSONL 文件中。

>>> ds = ray.data.read_json("s3://anonymous@ray-example-data/train.jsonl")
>>> ds.write_json("local:///tmp/data")

时间复杂度:O(数据集大小 / 并行度)

参数:
  • path – 目标根目录的路径,JSON 文件将写入该目录。

  • filesystem – 要写入的 pyarrow 文件系统实现。这些文件系统在 pyarrow 文档 中指定。如果需要为文件系统提供特定配置,请指定此项。默认情况下,文件系统会根据路径的方案自动选择。例如,如果路径以 s3:// 开头,则使用 S3FileSystem

  • try_create_dir – 如果 True,尝试创建目标路径中的所有目录。如果所有目录已经存在,则不执行任何操作。默认为 True

  • arrow_open_stream_args – 传递给 pyarrow.fs.FileSystem.open_output_stream 的 kwargs,用于打开文件进行写入时使用。

  • filename_provider – 一个 FilenameProvider 实现。使用此参数自定义文件名的外观。

  • pandas_json_args_fn – 返回一个字典的 callable,该字典包含在将每个块写入文件时提供给 pandas.DataFrame.to_json() 的写入参数。覆盖 pandas_json_args 中的任何重复键。如果您的任何写入参数无法被 pickle,或者如果您希望为每个数据集块延迟解析写入参数,请使用此参数而不是 pandas_json_args

  • num_rows_per_file – 每个文件要写入的目标行数。如果为 None ,Ray Data 会写入系统选择的行数到每个文件。指定的值只是一个提示,不是一个严格的限制。Ray Data 可能会写入更多或更少的行到每个文件。

  • ray_remote_args – 传递给写任务中 remote() 的 kwargs。

  • concurrency – Ray 任务的最大并发运行数量。设置此参数以控制并发运行的任务数量。这不会改变运行的任务总数。默认情况下,并发性是根据可用资源动态决定的。

  • pandas_json_args – 这些参数传递给 pandas.DataFrame.to_json(),该函数在底层用于写入每个 Dataset 块。默认情况下,这些参数为 dict(orient=”records”, lines=True)。