定制新Kedro项目的工具¶
有多种方式可以利用工具和示例代码来定制您的新项目:
页面底部有一个流程图展示了可用的选项。
将工具指定为kedro new的输入¶
导航到您希望创建新Kedro项目的目录,并运行以下命令:
kedro new
这将启动新项目创建工作流程。
注意
你也可以在kedro new命令中添加标志来跳过项目创建工作流程中的部分或全部步骤,从而跳过关于如何自定义项目的询问。下面将描述这些标志。
项目名称¶
第一个提示要求您输入项目名称。
要跳过此步骤并直接命名项目,请将其添加到 kedro new 如下:
kedro new --name=spaceflights
工具¶
接着系统会询问您要包含哪些工具。请从列表中选择,可以使用逗号分隔的值(1,2,4)、数值范围(1-3,5-7)、两者的组合(1,3-5,7),或者关键词all或none。如果跳过提示不输入任何值,将默认选择none。
Project Tools
=============
These optional tools can help you apply software engineering best practices.
To skip this step in future use --tools
To find out more: https://docs.kedro.org/en/stable/starters/new_project_tools.html
Tools
1) Lint: Basic linting with Ruff
2) Test: Basic testing with pytest
3) Log: Additional, environment-specific logging options
4) Docs: A Sphinx documentation setup
5) Data Folder: A folder structure for data management
6) PySpark: Configuration for working with PySpark
7) Kedro-Viz: Kedro's native visualisation tool
Which tools would you like to include in your project? [1-7/1,3/all/none]:
[none]:
也可以通过运行kedro new --help来查看可用工具列表
...
-t, --tools TEXT Select which tools you'd like to include. By default,
none are included.
Tools
1) Linting: Provides a basic linting setup with Ruff
2) Testing: Provides basic testing setup with pytest
3) Custom Logging: Provides more logging options
4) Documentation: Basic documentation setup with Sphinx
5) Data Structure: Provides a directory structure for
storing data
6) PySpark: Provides set up configuration for working
with PySpark
7) Kedro Viz: Provides Kedro's native visualisation tool
Example usage:
kedro new --tools=lint,test,log,docs,data,pyspark,viz
(or any subset of these options)
kedro new --tools=all
kedro new --tools=none
...
快捷方式¶
要跳过此步骤直接选择工具,请将工具选择添加到kedro new命令中,如下所示:
kedro new --tools=<your tool selection>
要指定您所需的工具,必须以逗号分隔的列表形式提供工具名称,例如 --tools=lint,test,viz。以下工具可供选择:lint、test、log、docs、data、pyspark 和 viz。
示例代码¶
在最后一步,系统会询问您是否希望用示例spaceflights起始流水线来填充项目。如果选择yes,则包含的示例代码将取决于您之前选择的工具,具体如下:
默认的spaceflights启动模板 (
spaceflights-pandas): 如果您选择了代码检查、测试、自定义日志记录、文档或数据结构中的任意组合,则会添加此模板,除非您同时选择了PySpark或Kedro Viz。PySpark spaceflights 入门项目 (
spaceflights-pyspark): 如果您选择了PySpark和其他工具组合时会添加此项目,除非您同时选择了Kedro Viz。Kedro Viz spaceflights 入门项目 (
spaceflights-pandas-viz): 如果您选择了Kedro Viz作为工具之一则会添加此项目,除非您同时选择了PySpark。完整功能的spaceflights入门项目 (
spaceflights-pyspark-viz): 如果您选择了所有可用工具(包括PySpark和Kedro Viz)则会添加此项目。
每个入门示例都经过精心设计,以展示所选工具的功能和集成方式,为您提供如何在项目中实际运用它们的实用见解。
快捷方式¶
要跳过此步骤并直接选择示例代码,请将您的偏好添加到 kedro new 如下:
kedro new --example=y
使用YAML配置指定工具¶
作为交互式项目创建工作流程的替代方案,您也可以通过向kedro new命令提供YML配置文件来传递参数值。参考以下文件:
# config.yml
"project_name":
"My Project"
"repo_name":
"my-project"
"python_package":
"my project"
"tools":
"lint, test, log, docs, data, pyspark, viz"
"example_pipeline":
"y"
要使用文件提供详细信息来创建新项目,运行以下命令:
kedro new --config=<path/to/config.yml>
注意
注意:使用配置文件创建新项目时,必须为项目名称、代码库名称和包名称提供值。工具选择是可选项,若省略则默认为none。
注意
当--config标志与--name、--tools或--example一起使用时,直接在命令行界面提供的值将覆盖配置文件中指定的值。
Kedro工具¶
Kedro中的工具作为模块化功能,用于增强基础项目模板。它们提供了一种方式,使您能够根据独特需求定制Kedro项目。在创建新项目时,您可以选择一个或多个可用工具,也可以完全不选择。
可用工具包括:linting、testing、custom logging、documentation、data structure、PySpark以及Kedro-Viz。
代码检查¶
Kedro 代码检查工具会在新项目的依赖中引入 ruff。项目创建后,请确保通过从项目根目录运行以下命令来安装这些依赖:
pip install -r requirements.txt
默认情况下,该代码检查工具将使用以下设置配置 ruff:
#pyproject.toml
line-length = 88
show-fixes = true
select = [
"F", # Pyflakes
"W", # pycodestyle
"E", # pycodestyle
"I", # isort
"UP", # pyupgrade
"PL", # Pylint
"T201", # Print Statement
]
ignore = ["E501"] # Ruff format takes care of line-too-long
安装完成后,您可以使用以下命令来格式化代码并进行代码检查:
ruff format path/to/project/root
ruff check path/to/project/root
虽然它对代码运行没有影响,但代码规范检查对代码质量至关重要,因为它能提高一致性、可读性、调试效率和可维护性。要了解更多关于Kedro项目的代码规范检查,请查阅我们的代码规范检查文档。
测试¶
该工具在新项目结构中引入了tests目录,其中包含带有示例单元测试的文件test_run.py。Pytest作为依赖项被添加到新项目的requirements中。项目创建后,请确保通过在项目根目录下运行以下命令来安装它:
pip install -r requirements.txt
该工具利用pytest并采用以下配置:
[tool.pytest.ini_options]
addopts = """
--cov-report term-missing \
--cov src/{{ cookiecutter.python_package }} -ra"""
[tool.coverage.report]
fail_under = 0
show_missing = true
exclude_lines = ["pragma: no cover", "raise NotImplementedError"]
要运行您的测试,请使用以下命令:
pytest path/to/your/project/root/tests
Kedro提倡使用单元测试来确保项目代码的高质量和可维护性。要了解更多关于Kedro单元测试的内容,请查看我们的测试文档
自定义日志记录¶
选择自定义日志工具会在项目的conf目录中引入logging.yml文件。该工具允许您自定义日志配置,而无需使用Kedro的默认日志配置。生成的conf/logging.yml提供了两个额外的日志处理器:console和info_file_handler,以及默认配置中可用的rich,不过实际只使用了info_file_handler和rich。
要使用提供的日志配置,请记住通过导航到项目根目录并运行以下命令,将环境变量KEDRO_LOGGING_CONFIG设置为指向logging.yml:
export KEDRO_LOGGING_CONFIG=conf/logging.yml
要了解更多关于在项目中使用日志记录或修改日志配置的信息,请查看我们的logging documentation。
文档¶
Including the Documentation tool adds a docs directory to your project structure and includes the Sphinx setup files, conf.py and index.rst, with some added features such as auto generation of HTML documentation.
The aim of this tool reflects Kedro’s commitment to best practices in understanding code and facilitating collaboration by helping you create and maintain guides and API docs.
如果您最初没有选择docs但后续想要添加文档功能,可以按照官方文档的指引为Kedro项目添加文档支持。
数据结构¶
数据结构工具为您的项目数据提供了本地标准化的文件夹层级,包含预定义的原始数据(raw)、中间数据(intermediate)和已处理数据(processed)等目录,这是遵循数据工程规范所确定的。 如果您希望在创建项目时包含示例流水线,这个工具就至关重要,因为它无法从工具选项中省略。 Kedro的功能远不止本地数据存储。通过fsspec URI,Kedro能与数据湖和各种数据库无缝集成,满足将数据存储在blob/对象存储或数据库中的专业团队需求。 我们相信,良好的数据结构组织是高效数据管理的关键,能够构建可扩展且可维护的数据流水线。 您可以了解更多关于Kedro推荐的项目目录结构。
PySpark¶
PySpark工具会修改项目的requirements.txt以包含PySpark依赖项,并调整项目设置以适应Spark作业,这将使您能够使用Apache Spark进行可扩展的数据处理。
PySpark符合Kedro的可扩展性原则,因为它为大型数据集提供了数据处理能力。
有关设置和使用的更多信息,请参阅PySpark集成文档。
Kedro Viz¶
viz工具将通过集成Kedro-Viz为您的项目添加可视化功能,它能创建一个交互式网页应用来可视化您的流水线,帮助直观理解DAG上的数据。
此外,viz还会添加实验追踪和数据集绘制的配置。
有关该工具的更多使用信息,请参阅Kedro-Viz文档。
流程图示例¶
以下流程图展示了您可以选择的一些工具示例:
