kedro.io.AbstractDataset

class kedro.io.AbstractDataset[source]

AbstractDataset 是所有数据集实现的基类。

所有数据集实现都应继承此抽象类并实现标记为抽象的方法。如果特定数据集实现无法与ParallelRunner结合使用,此类用户自定义数据集应具有属性_SINGLE_PROCESS = True。示例如下:

from pathlib import Path, PurePosixPath
import pandas as pd
from kedro.io import AbstractDataset


class MyOwnDataset(AbstractDataset[pd.DataFrame, pd.DataFrame]):
    def __init__(self, filepath, param1, param2=True):
        self._filepath = PurePosixPath(filepath)
        self._param1 = param1
        self._param2 = param2

    def load(self) -> pd.DataFrame:
        return pd.read_csv(self._filepath)

    def save(self, df: pd.DataFrame) -> None:
        df.to_csv(str(self._filepath))

    def _exists(self) -> bool:
        return Path(self._filepath.as_posix()).exists()

    def _describe(self):
        return dict(param1=self._param1, param2=self._param2)

示例 catalog.yml 规范:

my_dataset:
    type: <path-to-my-own-dataset>.MyOwnDataset
    filepath: data/01_raw/my_data.csv
    param1: <param1-value> # param1 is a required argument
    # param2 will be True by default

方法

exists()

通过调用提供的_exists()方法检查数据集输出是否已存在。

from_config(name, config[, load_version, ...])

使用提供的配置创建一个数据集实例。

load()

通过委托提供的加载方法来加载数据。

release()

释放所有缓存数据。

save(data)

通过委托给提供的保存方法来保存数据。

to_config()

将数据集实例转换为基于字典的配置以便序列化。

exists()[source]

通过调用提供的_exists()方法检查数据集输出是否已存在。

Return type:

bool

Returns:

标志,指示输出是否已存在。

Raises:

DatasetError – 当底层exists方法引发错误时。

classmethod from_config(name, config, load_version=None, save_version=None)[source]

使用提供的配置创建一个数据集实例。

Parameters:
  • name (str) – 数据集名称。

  • config (dict[str, Any]) - 数据集配置字典。

  • load_version (str | None) – 如果数据集已启用版本控制,则用于load操作的版本字符串。如果未启用版本控制,则对数据集无影响。

  • save_version (str | None) – 如果数据集启用了版本控制,则用于save操作的版本字符串。如果未启用版本控制,则对数据集无影响。

Return type:

AbstractDataset

Returns:

AbstractDataset 子类的一个实例。

Raises:

DatasetError – 当函数无法从其配置创建数据集时。

abstract load()[source]

通过委托提供的加载方法来加载数据。

Return type:

TypeVar(_DO)

Returns:

由提供的加载方法返回的数据。

Raises:

DatasetError – 当底层加载方法引发错误时。

release()[source]

释放所有缓存数据。

Raises:

DatasetError – 当底层释放方法引发错误时。

Return type:

None

abstract save(data)[source]

通过委托给提供的保存方法来保存数据。

Parameters:

data (TypeVar(_DI)) – 要通过提供的保存方法保存的值。

Raises:
  • DatasetError – 当底层保存方法引发错误时。

  • FileNotFoundError – 当保存方法在Windows系统上获取到的是文件而非目录时抛出该错误。

  • NotADirectoryError – 当保存方法在Unix系统上获取到文件而非目录时抛出。

Return type:

None

to_config()[source]

将数据集实例转换为基于字典的配置以便序列化。确保处理任何子类特定的细节,并为CachedDataset实现了版本控制和缓存的额外逻辑。

使用数据集的模块和类名添加一个键来表示其类型,并包含初始化参数。

对于CachedDataset,它会提取底层数据集的配置, 处理versioned标志并移除不必要的元数据。同时 确保嵌入式数据集的配置被适当地扁平化 或转换。

如果数据集有版本键,它会在配置中设置versioned标志。

如果存在,则从配置中移除metadata键。

Return type:

dict[str, Any]

Returns:

一个包含数据集类型和初始化参数的字典。