有人知道是否可以通过编程方式导入/导出DataFlow管道(已部署或处于草稿状态)?
这个想法是编写一个脚本来删除并创建一个DataFusion实例,以避免在不使用它时产生费用。 通过gloud命令行,可以设置DataFusion集群并销毁它,但是自动导出和导入我所有的管道也很有趣。
不幸的是,官方文档对我没有帮助...
谢谢!
答案 0 :(得分:4)
您可以使用REST API来执行此操作。但是,在给定实例URL的情况下,您可能需要一些脚本来自动执行此操作。您应该能够从应用程序列表API(reference here)中获得管道配置。在您的情况下,您首先需要获取管道列表(reference here),然后遍历所有管道并获取各个管道的详细信息,这些管道将具有名为configuration
的属性,该属性将具有配置管道json。您仍然必须使用名称,描述,工件信息以及带有从后端收到的配置json的config属性创建新的JSON。
一个样本看起来像这样
artifactName=cdap-data-pipeline,cdap-data-streams
作为查询参数的应用列表/namespaces/default/apps?artifactName=cdap-data-pipeline,cdap-data-streams?artifactName=cdap-data-pipeline,cdap-data-streams
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>)
}
要注意的一件事是,如果您在旧集群中具有安装时间表或管道的触发器,则不会在新集群中创建这些时间表。如果您只是在部署和运行管道,则管道的其余部分应该可以正常工作。
希望这会有所帮助。
刚刚意识到有用于访问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登录。身份验证成功后,这将成功返回您特定实例中的应用程序列表。