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对于数据的批量加载以及数据分片写入都是比较有用的,很值得尝试下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用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