导入/导出DataFusion管道

有人知道是否可以通过编程方式导入/导出DataFlow管道(已部署或处于草稿状态)?

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

不幸的是,官方文档对我没有帮助...

谢谢!

jingang0211 回答:导入/导出DataFusion管道

您可以使用REST API来执行此操作。但是,在给定实例URL的情况下,您可能需要一些脚本来自动执行此操作。您应该能够从应用程序列表API(reference here)中获得管道配置。在您的情况下,您首先需要获取管道列表(reference here),然后遍历所有管道并获取各个管道的详细信息,这些管道将具有名为configuration的属性,该属性将具有配置管道json。您仍然必须使用名称,描述,工件信息以及带有从后端收到的配置json的config属性创建新的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. 解析响应并遍历各个应用和GET应用详细信息
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部署管道即可。

要注意的一件事是,如果您在旧集群中具有安装时间表或管道的触发器,则不会在新集群中创建这些时间表。如果您只是在部署和运行管道,则管道的其余部分应该可以正常工作。

希望这会有所帮助。

[UPDATE] 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

在这里,我们使用gcloud获取对该特定实例的访问令牌。前提条件是使用gcloud SDK登录。身份验证成功后,这将成功返回您特定实例中的应用程序列表。

本文链接:https://www.f2er.com/3109149.html

大家都在问