kedro 的PartitionedDataset简单说明

kedro 的PartitionedDataset是一个比较强大的数据集处理模块,支持数据的分片加载以及分片写入能力,以下简单说明下

数据分片读取能力

  • 参考catalog 配置
companies:
  type: partitions.PartitionedDataset
  path: s3://kedro/01_raw/companies
  credentials: dev_s3
  dataset: pandas.CSVDataset
  filename_suffix: '.csv'
  • node使用
def preprocess_companies(companies: dict[str,pd.DataFrame],parameters: Dict) -> Tuple[pd.DataFrame, Dict]:
    print(parameters)
    print(companies)
    combine_all = pd.DataFrame()
 
    for key,partition_data_func in companies.items():
        print(key)
        partition_data = partition_data_func()
        combine_all = pd.concat([combine_all, partition_data], ignore_index=True, sort=True)
    combine_all["iata_approved"] = _is_true(combine_all["iata_approved"])
    combine_all["company_rating"] = _parse_percentage(combine_all["company_rating"])
    return combine_all, {"columns": combine_all.columns.tolist(), "data_type": "companies"}
  • pipeline 定义
node(
    func=preprocess_companies,
    inputs=["companies","parameters"],
    outputs=["preprocessed_companies", "companies_columns"],
    name="preprocess_companies_node",
),
  • 效果

数据分片写入能力

  • catalog 定义
# 读取
companiesv3:
  type: pandas.CSVDataset
  filepath: s3:///kedro/01_raw/companies.csv
  credentials: dev_s3
# 写入,基于iata_approved 分片键
companiesv4:
  type: partitions.PartitionedDataset
  path: s3://kedro/01_raw/companiesv2
  credentials: dev_s3
  dataset: pandas.CSVDataset
  filename_suffix: '.csv'
  • node 使用
def preprocess_companiesv2(companiesv3: pd.DataFrame) -> Dict[str, pd.DataFrame]:
    print(companiesv3.head())
    parts = {}
    for item in  companiesv3["iata_approved"].unique():
        parts[f"item-{item}"] = companiesv3[companiesv3["iata_approved"] == item]
    return parts
  • pipeline 定义
node(
    func=preprocess_companiesv2,
    inputs=["companiesv3"],
    outputs="companiesv4",
    name="preprocess_companies_nodev2",
),
  • 效果

说明

kedro 的PartitionedDataset对于数据的批量加载以及数据分片写入都是比较有用的,很值得尝试下

参考资料

https://docs.kedro.org/projects/kedro-datasets/en/kedro-datasets-2.0.0.post1/api/kedro_datasets.partitions.PartitionedDataset.html#kedro_datasets.partitions.PartitionedDataset

posted on   荣锋亮  阅读(8)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2023-09-30 citus 12.1 新特性
2023-09-30 tusd 2.0 发布
2023-09-30 dbt dbt-project-evaluator 扩展
2022-09-30 java 前后端开发模式简单说明
2022-09-30 net.schmizz.sshj.transport.TransportException: Could not verify ssh-ed25519 host key with fingerprint 问题解决
2020-09-30 java 应用基于mongo driver监控简单说明
2020-09-30 Kubernetes Multi-Tenancy — A Best Practices Guide

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示