Pipeline 组件
概述
Pipelines 由使用组件实现的节点组成。一个组件通常只实现一个工作单元,例如加载数据、转换数据、训练模型或将模型部署到服务中。以下展示了可视化管道编辑器中的一个基础管道,它利用组件加载数据文件、拆分文件、截断结果文件,并统计每个文件中的记录数量。

同样的流水线可以使用一个执行所有这些任务的单一组件来实现,但该组件可能不够通用可重用。例如,考虑另一个项目的数据存储在不同的存储类型中。使用细粒度组件,您只需要将加载数据组件替换为支持其他存储类型的组件,并可以保留其他所有内容。
通用组件
Elyra包含三个通用组件,允许处理Jupyter笔记本、Python脚本和R脚本。这些组件之所以被称为通用,是因为它们可以被包含在任何支持的运行时类型的管道中:本地/JupyterLab、Kubeflow Pipelines和Apache Airflow >= 2.7.0。组件通过调色板在管道编辑器中暴露。

注意:参考用户指南中的最佳实践主题,了解更多关于通用组件的特殊注意事项。
自定义组件
自定义组件通常仅针对一种运行时类型实现,例如 Kubeflow Pipelines 或 Apache Airflow < 2。(本地运行时类型不支持自定义组件)。Apache Airflow 的自定义组件,由于仅支持 Airflow 1.x,因此仅在 Elyra < 4 中受支持。

网络上有很多自定义组件可供您在流水线中使用,但您也可以创建自己的组件。有关如何创建组件的详细信息可在Kubeflow Pipelines 文档和Apache Airflow 文档中找到。请注意,在 Apache Airflow 中,组件被称为运算符,但为了保持一致性,Elyra 文档将其称为组件。
注意:请参考用户指南中的自定义流水线组件要求与最佳实践主题了解更多关于自定义组件的特殊注意事项。
组件目录
Elyra 并不包含自己的组件仓库。相反,你可以配置它从本地或远程目录拉取组件,例如文件系统、网络资源或源代码控制系统。Elyra 定义了一个连接器 API,提供对目录资源的访问。

Elyra 包含以下组件目录类型的连接器:
文件系统组件目录 提供对存储在JupyterLab/Elyra可读取文件系统中的组件的访问。
示例:一个使用
/users/jdoe/kubeflow_components/dev/my_component.yaml路径配置的文件系统组件目录,使得my_component.yaml可供Elyra使用。目录组件目录 提供对存储在目录中的组件的访问权限。
示例:一个使用
/users/jdoe/kubeflow_components/test路径配置的目录组件目录,使得该目录中的所有组件文件都可被Elyra使用。URL 组件目录 提供对存储在网络上并可通过 HTTP
GET请求获取的组件的访问权限。示例:使用
http://myserver:myport/mypath/my_component.yamlURL 配置的 URL 组件目录将my_component.yaml组件文件提供给 Elyra 使用。Apache Airflow 包目录 提供对存储在 Apache Airflow 内置发行版中的 Apache Airflow 操作器的访问。目前仅支持 Airflow < 2 版本。
Apache Airflow provider package catalogs 提供对存储在Apache Airflow provider包中的Apache Airflow算子的访问。目前仅支持Airflow < 2。
关于这些连接器的详细信息,请参考章节内置目录连接器参考。
您可以通过从目录连接器市场安装连接器或实现您自己的目录连接器来添加对其他组件目录的支持。
示例自定义组件
为了帮助您开始使用自定义组件,Elyra社区已经为Kubeflow Pipelines挑选了几个组件,并通过示例目录提供。

是否你的 Elyra 包含示例组件取决于你的部署方式:
社区维护的预构建容器镜像已预先安装并启用了Kubeflow Pipelines的示例组件目录。这些组件可在流水线编辑器中直接使用。
包含所有内容的独立安装(例如
pip install "elyra[all]")包含示例组件。然而,目录必须显式添加到调色板中。仅核心安装(例如
pip install elyra)不包括示例组件。示例目录必须单独安装并显式添加到调色板中。
安装并启用组件示例目录
按照Kubeflow Pipelines 组件示例目录中的说明进行操作。
一些包含组件的详细信息和演示流水线可以在Elyra示例仓库中找到:
自定义Airflow组件的特殊考量
从某些类型的组件目录连接器导入的自定义Airflow组件需要额外配置才能在流水线中使用。 详情请参阅 ‘Custom Pipeline Components最佳实践’ 。
管理流水线组件
组件在Elyra中通过JupyterLab UI或Elyra命令行界面进行管理。
使用 JupyterLab UI 管理自定义组件
自定义组件可以在Pipeline Components面板中添加、修改、复制和删除。

要在JupyterLab中访问面板:
点击管道编辑器工具栏中的
Open Pipeline Components按钮。
或
从JupyterLab侧边栏中选择
Pipeline Components面板。
或者
打开 JupyterLab 命令面板 (
Cmd/Ctrl + Shift + C) 并搜索Manage Pipeline Components。
添加一个组件目录
要从目录添加组件:
打开
Pipeline Components面板。在管道组件面板中点击
+。从可用选项列表中选择一个组件目录类型。
输入目录信息。有关每个属性的描述,请参考配置属性部分。
保存目录条目。
Elyra 查询目录,加载组件,并将它们添加到可视化管道编辑器面板中。
提示:如果在面板中未显示所添加目录中的组件,请检查日志文件中的错误消息。
重新加载组件目录条目
如果底层目录已更改,重新加载目录条目:
打开
Pipeline Components面板。点击条目名称旁边的
reload图标。目录条目被重新加载且更改会反映在可视化流水线编辑器面板中。条目处理的速度取决于目录类型、目录中的条目数量以及网络连接情况。
提示:如果在调色板中未显示重新加载目录的更新,请检查日志文件中的错误消息。
修改组件目录条目
打开
Pipeline Components面板。点击条目名称旁边的
edit(铅笔)图标。根据需要修改目录条目。
复制组件目录条目
要复制组件目录条目:
打开
Pipeline Components面板。点击条目名称旁边的复制图标。
按照‘修改组件目录条目’中的步骤自定义复制的条目。
删除组件目录条目
要从可视化管道编辑器调色板中移除组件目录条目及其引用的组件:
打开
Pipeline Components面板。点击条目名称旁边的
delete(垃圾桶)图标。确认删除。
注意:在删除目录条目后,使用所引用组件的流水线不再有效。
使用 Elyra CLI 管理自定义组件
自定义组件可以使用 elyra-metadata 命令行界面 来添加、修改和移除。
列出组件目录条目:
$ elyra-metadata list component-catalogs
Available metadata instances for component-catalogs:
Schema Instance Resource
------ -------- --------
elyra-kfp-examples-catalog kubeflow_pipelines_examples /.../Jupyter/metadata/component-catalogs/kubeflow_pipelines_examples.json
添加一个组件目录
要添加组件目录条目,请运行elyra-metadata create component-catalogs。
$ elyra-metadata create component-catalogs \
--display_name "filter components" \
--description "filter text in files" \
--runtime_type KUBEFLOW_PIPELINES \
--schema_name "url-catalog"\
--paths "['https://raw.githubusercontent.com/elyra-ai/examples/main/component-catalog-connectors/kfp-example-components-connector/kfp_examples_connector/resources/filter_text_using_shell_and_grep.yaml']" \
--categories '["filter content"]'
请参阅章节Configuration properties了解参数描述。
修改组件目录条目
要替换组件目录条目,请运行elyra-metadata update component-catalogs:
$ elyra-metadata update component-catalogs \
--name "filter_components" \
--display_name "filter components" \
--description "filter text in files" \
--runtime_type KUBEFLOW_PIPELINES \
--schema_name "url-catalog"\
--paths "['https://raw.githubusercontent.com/elyra-ai/examples/main/component-catalog-connectors/kfp-example-components-connector/kfp_examples_connector/resources/filter_text_using_shell_and_grep.yaml']" \
--categories='["file operations"]'
注意:您必须指定所有属性值,而不仅仅是您想要修改的那些。
请参阅章节 Configuration properties 以获取参数描述。
导出组件目录
导出组件目录:
$ elyra-metadata export component-catalogs \
--directory "/tmp/foo"
上述示例会将所有组件目录导出到“/tmp/foo/component-catalogs”目录。
请注意,您必须指定--directory选项。
在导出组件目录时,可以指定两个标志:
要包含无效组件目录,请使用
--include-invalid标志。要清理导出目录,请使用
--clean标志。在上述示例中使用--clean标志将在导出组件目录之前清空 "/tmp/foo/component-catalogs" 目录。
导入组件目录
导入组件目录:
$ elyra-metadata import component-catalogs \
--directory "/tmp/foo"
上述示例将导入“/tmp/foo”目录中的所有有效组件目录(任何子目录中存在的文件将被忽略)。
请注意,您必须指定--directory选项。
默认情况下,如果已存在同名的组件目录实例,则不会导入元数据。--overwrite标志可用于覆盖此默认行为,并用导入目录中的新文件替换任何已安装的元数据。
删除组件目录条目
要将一个组件目录条目及其组件定义从可视化管道编辑器调色板中移除:
$ elyra-metadata remove component-catalogs \
--name "filter_components"
请参阅章节Configuration properties了解参数描述。
迁移用户定义的组件注册表
Elyra 3.3版本将Component Registries重命名为Component Catalogs,并根据旧模式的location-type将component-registry模式拆分为三个独立的“组件目录”模式。因此,除非进行迁移,否则在Elyra 3.3之前创建的任何用户定义的组件注册表实例将不可用。
然而,Elyra 3.7版本正式移除了对component-registries模式的支持,包括将组件注册表实例迁移至组件目录实例的功能。如果您已从Elyra 3.2或更早版本升级至Elyra 3.7+,并且仍希望访问先前定义的实例,首先需要安装一个低级别版本,并使用以下说明迁移您的实例。此迁移通过elyra-metadata CLI工具执行。
确定要迁移的实例
要确定可迁移的实例,请执行以下命令:
$ elyra-metadata list component-registries
在这个示例中,有三个用户定义的实例。
Available metadata instances for component-registries:
Schema Instance Resource
------ -------- --------
component-registry airflow_components /Users/jovyan/Library/Jupyter/metadata/component-registries/airflow_components.json
component-registry aa_custom /Users/jovyan/Library/Jupyter/metadata/component-registries/aa_custom.json
component-registry myoperators /Users/jovyan/Library/Jupyter/metadata/component-registries/myoperators.json
您可能会发现其中某些实例不再适用。如果存在不适用于 3.3 的实例,可以单独移除它们:
$ elyra-metadata remove component-registries --name aa_custom
Metadata instance 'aa_custom' removed from schemaspace 'component-registries'.
注意:由于component-registries schema空间已被弃用,实例可以被列出、移除或迁移,但无法创建。
迁移实例
确定要迁移的组件注册实例集后,发出以下命令以迁移剩余的实例:
$ elyra-metadata migrate component-registries
完成后,这应该只需要几秒钟时间,将生成类似于以下的输出:
[I 2021-11-15 11:05:48,012.012] Migrating 'component-registries' instance 'myoperators' to schema 'local-file-catalog' of schemaspace 'component-catalogs'...
[I 2021-11-15 11:05:48,042.042] Migrating 'component-registries' instance 'airflow_components' to schema 'url-catalog' of schemaspace 'component-catalogs'...
The following component-registries instances were migrated: ['myoperators', 'airflow_components']
一旦迁移完成,这些条目应出现在组件目录集合中。可以通过列出组件目录实例来确认:
$ elyra-metadata list component-catalogs
Available metadata instances for component-catalogs:
Schema Instance Resource
------ -------- --------
local-file-catalog aa_custom /Users/jovyan/Library/Jupyter/metadata/component-catalogs/aa_custom.json
local-file-catalog myoperators /Users/jovyan/Library/Jupyter/metadata/component-catalogs/myoperators.json
url-catalog airflow_components /Users/jovyan/Library/Jupyter/metadata/component-catalogs/airflow_components.json
配置属性
组件目录条目属性定义如下。下方标题中用括号括住的字符串,表示CLI选项名称。
名称 (display_name)
目录条目的用户友好名称。请注意,目录条目名称不会在调色板中显示。此属性为必需项。
示例:data load components
N/A (名称)
此目录条目的规范名称。若未提供值,将从Name自动生成。
示例: data_load_components
说明 (description)
目录条目的描述。
示例:Load data from external data sources
分类(类别)
在流水线编辑器调色板中,组件按类别分组以便更容易访问。如果未提供类别,则此目录条目定义的组件将添加到调色板中的no category下。每个类别的字符数限制为18个或更少。
示例 (CLI):
['从数据库加载数据']['训练 模型','pytorch']
运行时 (runtime)
支持组件运行的运行时环境。有效值为下拉菜单(UI)或帮助文本(CLI)中显示的已配置运行时集合。此属性为必填项。
示例:
APACHE_AIRFLOWKUBEFLOW_PIPELINES
内置目录连接器参考
Elyra 支持使用其内置连接器从文件系统和网络获取组件。
文件系统组件目录
文件系统组件目录连接器提供对存储在运行Elyra的文件系统中的组件的访问:
~可用于表示用户的主目录。不支持通配符(例如
*或?)。您可以指定一个或多个文件名。
最佳实践:流水线文件包含对组件加载位置的引用。当向目录添加文件时,指定一个
base directory和一个相对文件路径,使流水线能够在不同环境中移植。
示例 (GUI):
/Users/patti/specs/load_data_from_public_source/http_operator.py~patti/specs/filter_files/row_filter.yaml
示例 (CLI):
['/Users/patti/specs/load_data_from_public_source/http_operator.py']['~patti/specs/filter_files/row_filter.yaml']['/Users/patti/specs/comp1.yaml','/Users/patti/specs/comp2.yaml']
目录组件目录
目录组件目录连接器提供对存储在文件系统目录中的组件的访问:
如果
Path设置为/Users/patti/specs/load_from_database,连接器将在指定目录中搜索所选运行时类型的组件。如果启用了子目录选项,搜索将递归执行。
~可用于表示用户的主目录。您可以指定一个或多个目录。
示例 (图形用户界面):
/Users/patti/specs/load_from_database~patti/specs/load_from_cloud_storage
示例 (CLI):
['/Users/patti/specs/load_from_database']['~patti/specs/load_from_cloud_storage']['/Users/patti/load_specs/','/Users/patti/cleanse_specs/']
URL组件目录
URL 组件目录连接器提供对存储在 web 上的组件的访问:
您可以指定一个或多个URL资源。
指定的URL必须可以通过HTTP
GET请求获取。支持http、https和fileURI schemes。如果资源受到保护,请提供凭据,例如用户ID和密码或API密钥。
在安全环境中,SSL服务器真实性只能使用基于私有公钥基础设施(PKI)的证书进行验证,这些证书带有根证书颁发机构(CAs)以及可选的中间证书颁发机构(CAs),这些机构并非公开受信任,您必须在运行JupyterLab/Elyra的环境中定义环境变量
TRUSTED_CA_BUNDLE_PATH。变量值必须标识一个现有的 Privacy-Enhanced Mail (PEM) file。
示例 (图形界面):
-
# 任务:请将HTML中显示的内容翻译成中文。该HTML是一个名为elyra的工具,如果遇到elyra,根据上下文虽然说的是这个工具,但可以不进行翻译。
# 翻译规则:
1、无需翻译的内容:遇到公式、API接口、函数名称、参数名称。
2、遇到
HTTPS URL
https://raw.githubusercontent.com/elyra-ai/examples/main/component-catalog-connectors/kfp-example-components-connector/kfp_examples_connector/resources/filter_text_using_shell_and_grep.yaml
本地文件URL
file:///absolute/path/to/component.yaml
可能是SQL、python、java、R、scala等,仅翻译其中的注释部分,代码部分无需翻译。注意:必须在注释符号后才能确认为注释,方可翻译。
3、翻译时不要改变HTML的格式。
4、不要更改标签内的文字。
5、如果输入的是函数名称、函数参数或参数值,则无需翻译。
6、仅输出翻译结果,无需解释。
7、若无需翻译,直接输出原文,无需添加注释或解释。
# 专业术语:
智能体:Agent
# HTML内容如下:
示例 (CLI):
HTTPS 网址
['https://raw.githubusercontent.com/elyra-ai/examples/main/component-catalog-connectors/kfp-example-components-connector/kfp_examples_connector/resources/filter_text_using_shell_and_grep.yaml']
本地文件URL
['file:///absolute/path/to/component.yaml']
多个网址
['
' ,'' ]
Apache Airflow 包目录
Apache Airflow package catalog connector 提供了对存储在 Apache Airflow built distributions 中的操作器的访问:
仅支持 Airflow < 2 版本。该功能在 Elyra >=4 中无法使用,因为不再支持 Airflow 1.x。
指定的URL必须能够通过HTTP
GET请求获取。支持http、https和fileURI方案。在安全环境中,SSL服务器真实性只能使用基于私有公钥基础设施(PKI)的证书进行验证,这些证书具有根以及可选的非公开信任的中级证书颁发机构(CA),您必须在JupyterLab/Elyra运行环境中定义环境变量
TRUSTED_CA_BUNDLE_PATH。变量值必须标识一个现有的隐私增强邮件(PEM)文件。
示例:
Apache Airflow(v1.10.15):
https://files.pythonhosted.org/packages/f0/3a/f5ce74b2bdbbe59c925bb3398ec0781b66a64b8a23e2f6adc7ab9f1005d9/apache_airflow-1.10.15-py2.py3-none-any.whl
已下载的Apache Airflow包的本地副本
file:///absolute/path/to/apache_airflow-1.10.15-py2.py3-none-any.whl
Apache Airflow Provider 包目录
Apache Airflow provider package catalog connector 提供访问存储在Apache Airflow provider packages中的操作器:
仅支持 wheel 分发格式。
仅支持 Airflow < 2 及 Airflow < 2 的操作器。该功能在 Elyra >=4 中无法使用,Elyra 不再支持 Airflow 1.x。
指定的URL必须能够通过HTTP
GET请求检索。http、https和fileURI schemes均受支持。在受保护的环境中,SSL服务器身份验证只能使用基于私有公钥基础设施(PKI)的证书进行验证,这些证书具有根证书和可选的中间证书颁发机构(CA),这些机构不受公共信任,您必须在JupyterLab/Elyra运行的环境中定义环境变量
TRUSTED_CA_BUNDLE_PATH。变量值必须指定一个现有的隐私增强邮件(PEM)文件。
示例:
apache-airflow-providers-http(v2.0.2):
https://files.<pythonhosted.org/packages/a1/08/91653e9f394cbefe356ac07db809be7e69cc89b094379ad91d6cef3d2bc9/apache_airflow_providers_http-2.0.2-py3-none-any.whl
已下载提供程序包的本地副本
file:///absolute/path/to/apache_airflow_providers_http-2.0.2-py3-none-any.whl