Import/Export DataFusion 管道

Import/Export DataFusion pipelines

有谁知道是否可以编程方式 import/export DataFlow 管道(已部署或处于草稿状态)?

想法是编写一个脚本来删除和创建 DataFusion 实例,以避免在不使用时计费。 通过 gloud 命令行,可以配置 DataFusion 集群并销毁它,但是自动导出和导入我的所有管道也会很有趣。

遗憾的是,官方文档对我没有帮助...

谢谢!

您可以使用 REST API 来执行此操作。然而,您可能需要一些脚本,在给定实例 url 的情况下自动执行此操作。您应该能够从应用程序列表 API (reference here). In your case you first need to get list of pipelines (reference here) 中获取管道配置,然后遍历所有管道并获取单个管道的详细信息,该管道将有一个名为 configuration 的 属性将具有配置管道 json。您仍然需要创建一个新的 JSON,其中包含名称、描述、工件信息以及配置 属性,以及您从后端收到的配置 json。

示例如下所示,

  1. 在您即将销毁的集群中,GET API 以获取应用列表 artifactName=cdap-data-pipeline,cdap-data-streams 作为查询参数
/namespaces/default/apps?artifactName=cdap-data-pipeline,cdap-data-streams?artifactName=cdap-data-pipeline,cdap-data-streams
  1. 解析响应并遍历各个应用并获取应用详细信息
namespaces/default/apps/<app-name>

对于每个应用,在响应中获取 configuration 属性 并形成您的最终 JSON 之类的东西,


{   
  "name": "Pipeline_1",
  "description": "Pipeline to do taskX",
  "artifact": {
    "name": "cdap-data-pipeline",
    "version": "6.1.0-SNAPSHOT",
    "scope": "USER"
  },
  "config": JSON.parse(<configuration-from-app-detailed-api>) 
} 

  1. 然后在您即将创建的新集群中,只需使用您在上一步中获得的 json 部署管道。

需要注意的一件事是,如果您在旧集群中为管道设置了计划或触发器,则不会在新集群中创建它们。如果您只是部署和 运行 管道,则管道的其余部分应该可以正常工作。

希望对您有所帮助。

[更新] 11/20

刚刚意识到有关于访问 REST API 以进行数据融合的文档 here 然而,如何进行 REST api 调用并不完全需要。这是有关如何操作的示例,

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -w"\n" -X GET <instance-url>/namespaces/default/apps?artifactName=cdap-data-pipeline,cdap-data-streams?artifactName=cdap-data-pipeline,cdap-data-streams

这里我们使用 gcloud 来获取特定实例的访问令牌。这样做的先决条件是使用 gcloud SDK 登录。一旦身份验证成功,这应该会成功 return 您特定实例中的应用程序列表。