kedro ossfs 支持说明
kedro 是基于fsspec 进行内部文件处理的,但是在对于是cloud remote 文件系统的时候是基于白名单处理的有缺陷,对于oss 支持就有问题(比如解析bucket),解决方法很多,一种是直接修改kedro.io.core 中的CLOUD_PROTOCOLS,还有一种就是通过python 的猴子补丁模式,比较快速
修改方法
- 猴子补丁模式参考修改
可以直接在pipeline 项目中的 pipeline_registry.py 中进行修改,如下
from kedro.io import core
core.CLOUD_PROTOCOLS = ("s3","oss","s3n", "s3a", "gcs", "gs", "adl", "abfs", "abfss", "gdrive")
这样项目模块中的CLOUD_PROTOCOLS 就包含了oss 了,支持就可以了
- 源码直接修改
就是修改kedro.io import core 中的CLOUD_PROTOCOLS 添加oss 等
说明
目前官方kedro 我也已经发了一个pr,等待review
参考资料
https://github.com/fsspec/ossfs
https://docs.kedro.org/en/stable/data/data_catalog.html
https://dev.to/karishmashukla/monkeying-around-with-python-a-guide-to-monkey-patching-obc
https://github.com/GrahamDumpleton/wrapt/blob/develop/blog/11-safely-applying-monkey-patches-in-python.md
https://machinelearningmastery.com/monkey-patching-python-code/
https://medium.com/@bits_code/https-medium-com-bits-code-monkey-patching-in-python-9a28dc0cbe4f