1

我正在尝试使用 CDAP RESTAPI 参考将我的自定义插件上传到数据融合。我按照文档执行了这些步骤,但我仍然没有找到使用 REST API 添加插件 JSON 文件的方法。

curl -X POST -H "授权:承载 $(gcloud auth print-access-token)" "${CDAP_ENDPOINT}/api/v3/namespaces/vega_demo/artifacts/example" -H "Artifact-Extends: system:cdap-数据管道[6.0.0,10.0.0-SNAPSHOT)/system:cdap-data-streams[6.0.0,10.0.0-SNAPSHOT)" --data-binary @/path/to/example-1.0.0 -SNAPSHOT.jar @/path/to/example-1.0.0-SNAPSHOT.json

工件添加成功curl:(6)无法解析主机:

插件已加载但配置 json 文件未加载导致插件错误

4

1 回答 1

1

根据使用的命令,我建议验证您是否正确设置了端点。

export INSTANCE_ID=your-instance-id
export CDAP_ENDPOINT=$(gcloud beta data-fusion instances describe \
--location=us-central1 \
--format="value(apiEndpoint)" \
${INSTANCE_ID})

根据官方 CDAP文档,似乎端点不应包含v3之前的部分api

此外,如果您的实例属于Basic edition,则命名空间为default;否则,当使用企业版时,您可以创建命名空间。

使用 curl 方法时,似乎您需要在标头中添加配置信息,因为此方法不包括 json 加载

另一方面,如果您在使用 curl 时遇到问题,我建议您使用 UI。

以这个例子上传插件mysql-connector-java-5.1.35.jar到Data fusion with curl,配置文件应该是这样的:

{
  "parents": [ "system:cdap-data-pipeline[6.1.1,6.1.1]", "system:cdap-data-streams[6.1.1,6.1.1]" ],
  "plugins": [
    {
      "name": "mysql",
      "type": "jdbc",
      "className": "com.mysql.jdbc.Driver"
    }
  ]
}

由于使用 curl 您只能上传 jar文件,要包含配置文件中的信息,您应该使用 HTTP 标头包含此信息,如下所示:

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"${CDAP_ENDPOINT}/v3/namespaces/default/artifacts/example" \
-H 'Artifact-Plugins: [ { "name": "mysql", "type": "jdbc", "className": "com.mysql.jdbc.Driver" } ]' \
-H "Artifact-Version: 5.1.35" \
-H "Artifact-Extends: system:cdap-data-pipeline[6.1.1, 6.1.1]/system:cdap-data-streams[6.1.1, 6.1.1]" \
--data-binary @mysql-connector-java-5.1.35.jar
于 2020-03-13T22:40:23.733 回答