gpt4 book ai didi

hook - 如何在 kedro 0.17.0 中加载特定的目录数据集实例?

转载 作者:行者123 更新时间:2023-12-04 08:10:17 24 4
gpt4 key购买 nike

我们使用的是 kedro 版本 0.15.8,我们以这种方式从目录中加载一个特定项目:

from kedro.context import load_context
get_context().catalog.datasets.__dict__[key]
现在,我们正在更改为 kedro 0.17.0 并尝试以相同的方式加载目录数据集(使用框架上下文):
from kedro.framework.context import load_context
get_context().catalog.datasets.__dict__[key]
现在我们得到错误:

kedro.framework.context.context.KedroContextError: Expected an instance of ConfigLoader, got NoneType instead.


这是因为项目中的钩子(Hook) register_config_loader 没有被调用该函数的 hook_manager 使用。
项目 Hook 按以下方式定义:
class ProjectHooks:

@hook_impl

def register_pipelines(self) -> Dict[str, Pipeline]:

"""Register the project's pipeline.

Returns:

A mapping from a pipeline name to a ``Pipeline`` object.

"""

pm = pre_master.create_pipeline()

return {

"pre_master": pm,

"__default__": pm

}

@hook_impl

def register_config_loader(self, conf_paths: Iterable[str]) -> ConfigLoader:

return ConfigLoader(conf_paths)

@hook_impl

def register_catalog(

self,

catalog: Optional[Dict[str, Dict[str, Any]]],

credentials: Dict[str, Dict[str, Any]],

load_versions: Dict[str, str],

save_version: str,

journal: Journal,

) -> DataCatalog:

return DataCatalog.from_config(

catalog, credentials, load_versions, save_version, journal

)

project_hooks = ProjectHooks()
并且设置被称为以下方式:
"""项目设置。"""
from price_based_trading.hooks import ProjectHooks


HOOKS = (ProjectHooks(),)
我们如何配置它以使用钩子(Hook)调用方法 load_context(_working_dir).catalog.datasets ?
我在kedro社区发布了同样的问题: https://discourse.kedro.community/t/how-to-load-a-specific-catalog-item-in-kedro-0-17-0/310

最佳答案

这是一个愚蠢的错误,因为我没有创建 Kedro session 。要加载目录中的项目,可以使用以下代码完成:

from kedro.framework.session import get_current_session
from kedro.framework.session import KedroSession

KedroSession.create("name_of_proyect") as session:
key = "item_of_catalog"
session = get_current_session()
context = session.load_context()
kedro_connector = context.catalog.datasets.__dict__[key]
// or kedro_connector = context.catalog._get_datasets(key)

关于hook - 如何在 kedro 0.17.0 中加载特定的目录数据集实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66009324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com