From f2733178cce95a4b901736388708640293f6b187 Mon Sep 17 00:00:00 2001 From: "Xiong, Chen Xiao" Date: Thu, 29 Jun 2023 16:21:21 +0000 Subject: [PATCH] DataArts API 20230329 version Reviewed-by: Kacur, Michal Co-authored-by: Xiong, Chen Xiao Co-committed-by: Xiong, Chen Xiao --- docs/dataartsstudio/api-ref/ALL_META.TXT.json | 1382 +++++++++++++ docs/dataartsstudio/api-ref/CLASS.TXT.json | 1244 +++++++++++ .../CreateAndStartRandomClusterJob.html | 882 ++++++++ .../dataartsstudio/api-ref/CreateCluster.html | 655 ++++++ docs/dataartsstudio/api-ref/CreateJob.html | 803 +++++++ docs/dataartsstudio/api-ref/CreateLink.html | 639 ++++++ .../dataartsstudio/api-ref/DeleteCluster.html | 175 ++ docs/dataartsstudio/api-ref/DeleteJob.html | 159 ++ docs/dataartsstudio/api-ref/DeleteLink.html | 164 ++ docs/dataartsstudio/api-ref/ErrorCode.html | 21 + docs/dataartsstudio/api-ref/ListClusters.html | 856 ++++++++ docs/dataartsstudio/api-ref/PARAMETERS.txt | 3 + .../api-ref/RestartCluster.html | 256 +++ .../api-ref/ShowClusterDetail.html | 1000 +++++++++ .../dataartsstudio/api-ref/ShowJobStatus.html | 393 ++++ docs/dataartsstudio/api-ref/ShowJobs.html | 690 +++++++ docs/dataartsstudio/api-ref/ShowLink.html | 407 ++++ .../api-ref/ShowSubmissions.html | 428 ++++ docs/dataartsstudio/api-ref/StartCluster.html | 175 ++ docs/dataartsstudio/api-ref/StartJob.html | 264 +++ docs/dataartsstudio/api-ref/StopCluster.html | 213 ++ docs/dataartsstudio/api-ref/StopJob.html | 154 ++ docs/dataartsstudio/api-ref/UpdateJob.html | 817 ++++++++ docs/dataartsstudio/api-ref/UpdateLink.html | 569 +++++ .../api-ref/dataartsstudio_02_0001.html | 25 + .../api-ref/dataartsstudio_02_0002.html | 13 + .../api-ref/dataartsstudio_02_0003.html | 11 + .../api-ref/dataartsstudio_02_0004.html | 13 + .../api-ref/dataartsstudio_02_0005.html | 12 + .../api-ref/dataartsstudio_02_0006.html | 16 + .../api-ref/dataartsstudio_02_0007.html | 196 ++ .../api-ref/dataartsstudio_02_0008.html | 15 + .../api-ref/dataartsstudio_02_0009.html | 247 +++ .../api-ref/dataartsstudio_02_0010.html | 58 + .../api-ref/dataartsstudio_02_0011.html | 39 + .../api-ref/dataartsstudio_02_0012.html | 14 + .../api-ref/dataartsstudio_02_0013.html | 489 +++++ .../api-ref/dataartsstudio_02_0015.html | 36 + .../api-ref/dataartsstudio_02_0016.html | 17 + .../api-ref/dataartsstudio_02_0049.html | 25 + .../api-ref/dataartsstudio_02_0050.html | 589 ++++++ .../api-ref/dataartsstudio_02_0051.html | 204 ++ .../api-ref/dataartsstudio_02_0052.html | 150 ++ .../api-ref/dataartsstudio_02_0053.html | 160 ++ .../api-ref/dataartsstudio_02_0054.html | 81 + .../api-ref/dataartsstudio_02_0055.html | 85 + .../api-ref/dataartsstudio_02_0056.html | 19 + .../api-ref/dataartsstudio_02_0057.html | 87 + .../api-ref/dataartsstudio_02_0058.html | 142 ++ .../api-ref/dataartsstudio_02_0059.html | 96 + .../api-ref/dataartsstudio_02_0060.html | 15 + .../api-ref/dataartsstudio_02_0061.html | 88 + .../api-ref/dataartsstudio_02_0062.html | 23 + .../api-ref/dataartsstudio_02_0063.html | 213 ++ .../api-ref/dataartsstudio_02_0064.html | 86 + .../api-ref/dataartsstudio_02_0065.html | 87 + .../api-ref/dataartsstudio_02_0066.html | 95 + .../api-ref/dataartsstudio_02_0067.html | 95 + .../api-ref/dataartsstudio_02_0082.html | 127 ++ .../api-ref/dataartsstudio_02_0083.html | 63 + .../api-ref/dataartsstudio_02_0084.html | 1436 +++++++++++++ .../api-ref/dataartsstudio_02_0085.html | 199 ++ .../api-ref/dataartsstudio_02_0086.html | 265 +++ .../api-ref/dataartsstudio_02_0087.html | 216 ++ .../api-ref/dataartsstudio_02_0088.html | 171 ++ .../api-ref/dataartsstudio_02_0089.html | 123 ++ .../api-ref/dataartsstudio_02_0090.html | 184 ++ .../api-ref/dataartsstudio_02_0091.html | 177 ++ .../api-ref/dataartsstudio_02_0092.html | 141 ++ .../api-ref/dataartsstudio_02_0093.html | 220 ++ .../api-ref/dataartsstudio_02_0094.html | 284 +++ .../api-ref/dataartsstudio_02_0095.html | 343 +++ .../api-ref/dataartsstudio_02_0096.html | 257 +++ .../api-ref/dataartsstudio_02_0097.html | 184 ++ .../api-ref/dataartsstudio_02_0098.html | 191 ++ .../api-ref/dataartsstudio_02_0099.html | 206 ++ .../api-ref/dataartsstudio_02_0100.html | 249 +++ .../api-ref/dataartsstudio_02_0101.html | 244 +++ .../api-ref/dataartsstudio_02_0102.html | 180 ++ .../api-ref/dataartsstudio_02_0103.html | 164 ++ .../api-ref/dataartsstudio_02_0104.html | 164 ++ .../api-ref/dataartsstudio_02_0105.html | 232 +++ .../api-ref/dataartsstudio_02_0106.html | 190 ++ .../api-ref/dataartsstudio_02_0127.html | 22 + .../api-ref/dataartsstudio_02_0260.html | 21 + .../api-ref/dataartsstudio_02_0261.html | 41 + .../api-ref/dataartsstudio_02_0262.html | 248 +++ .../api-ref/dataartsstudio_02_0263.html | 110 + .../api-ref/dataartsstudio_02_0266.html | 191 ++ .../api-ref/dataartsstudio_02_0267.html | 213 ++ .../api-ref/dataartsstudio_02_0268.html | 138 ++ .../api-ref/dataartsstudio_02_0269.html | 191 ++ .../api-ref/dataartsstudio_02_0270.html | 98 + .../api-ref/dataartsstudio_02_0271.html | 97 + .../api-ref/dataartsstudio_02_0272.html | 98 + .../api-ref/dataartsstudio_02_0274.html | 134 ++ .../api-ref/dataartsstudio_02_0276.html | 114 + .../api-ref/dataartsstudio_02_0277.html | 97 + .../api-ref/dataartsstudio_02_0278.html | 108 + .../api-ref/dataartsstudio_02_0280.html | 108 + .../api-ref/dataartsstudio_02_0281.html | 39 + .../api-ref/dataartsstudio_02_0282.html | 152 ++ .../api-ref/dataartsstudio_02_0283.html | 331 +++ .../api-ref/dataartsstudio_02_0284.html | 358 ++++ .../api-ref/dataartsstudio_02_0285.html | 87 + .../api-ref/dataartsstudio_02_0286.html | 161 ++ .../api-ref/dataartsstudio_02_0287.html | 334 +++ .../api-ref/dataartsstudio_02_0288.html | 148 ++ .../api-ref/dataartsstudio_02_0289.html | 101 + .../api-ref/dataartsstudio_02_0290.html | 157 ++ .../api-ref/dataartsstudio_02_0291.html | 137 ++ .../api-ref/dataartsstudio_02_0292.html | 122 ++ .../api-ref/dataartsstudio_02_0293.html | 100 + .../api-ref/dataartsstudio_02_0294.html | 105 + .../api-ref/dataartsstudio_02_0295.html | 37 + .../api-ref/dataartsstudio_02_0296.html | 173 ++ .../api-ref/dataartsstudio_02_0297.html | 317 +++ .../api-ref/dataartsstudio_02_0298.html | 165 ++ .../api-ref/dataartsstudio_02_0299.html | 114 + .../api-ref/dataartsstudio_02_0300.html | 164 ++ .../api-ref/dataartsstudio_02_0301.html | 183 ++ .../api-ref/dataartsstudio_02_0302.html | 87 + .../api-ref/dataartsstudio_02_0303.html | 183 ++ .../api-ref/dataartsstudio_02_0304.html | 116 ++ .../api-ref/dataartsstudio_02_0305.html | 100 + .../api-ref/dataartsstudio_02_0306.html | 74 + .../api-ref/dataartsstudio_02_0307.html | 87 + .../api-ref/dataartsstudio_02_0308.html | 231 +++ .../api-ref/dataartsstudio_02_0309.html | 21 + .../api-ref/dataartsstudio_02_0310.html | 329 +++ .../api-ref/dataartsstudio_02_0311.html | 1837 +++++++++++++++++ .../api-ref/dataartsstudio_02_0313.html | 346 ++++ .../api-ref/dataartsstudio_02_0314.html | 42 + .../api-ref/dataartsstudio_02_0316.html | 15 + .../api-ref/dataartsstudio_02_0317.html | 30 + .../api-ref/dataartsstudio_02_0318.html | 150 ++ .../api-ref/dataartsstudio_02_0330.html | 32 + .../api-ref/dataartsstudio_02_0350.html | 16 + .../api-ref/en-us_image_0000001321929240.gif | Bin 0 -> 29752 bytes .../api-ref/en-us_image_0000001322088924.png | Bin 0 -> 96274 bytes .../api-ref/en-us_image_0000001322248848.png | Bin 0 -> 51740 bytes .../api-ref/en-us_image_0000001373088745.png | Bin 0 -> 16641 bytes .../api-ref/en-us_image_0000001373088765.png | Bin 0 -> 4977 bytes .../api-ref/en-us_image_0000001373289273.png | Bin 0 -> 22462 bytes .../api-ref/en-us_image_0000001373289293.png | Bin 0 -> 22462 bytes .../api-ref/en-us_image_0000001373408961.png | Bin 0 -> 16133 bytes .../api-ref/en-us_image_0000001373408969.png | Bin 0 -> 23829 bytes .../caution_3.0-en-us.png | Bin 0 -> 2752 bytes .../public_sys-resources/danger_3.0-en-us.png | Bin 0 -> 2771 bytes .../api-ref/public_sys-resources/delta.gif | Bin 0 -> 836 bytes .../api-ref/public_sys-resources/deltaend.gif | Bin 0 -> 834 bytes .../public_sys-resources/icon-arrowdn.gif | Bin 0 -> 1887 bytes .../public_sys-resources/icon-arrowrt.gif | Bin 0 -> 1890 bytes .../public_sys-resources/icon-caution.gif | Bin 0 -> 1086 bytes .../public_sys-resources/icon-danger.gif | Bin 0 -> 1086 bytes .../public_sys-resources/icon-huawei.gif | Bin 0 -> 2767 bytes .../public_sys-resources/icon-note.gif | Bin 0 -> 983 bytes .../public_sys-resources/icon-notice.gif | Bin 0 -> 962 bytes .../api-ref/public_sys-resources/icon-tip.gif | Bin 0 -> 879 bytes .../public_sys-resources/icon-warning.gif | Bin 0 -> 1086 bytes .../public_sys-resources/note_3.0-en-us.png | Bin 0 -> 1080 bytes .../public_sys-resources/notice_3.0-en-us.png | Bin 0 -> 1672 bytes .../warning_3.0-en-us.png | Bin 0 -> 3164 bytes .../api-ref/topic_300000000_3.html | 28 + .../api-ref/topic_300000001_2.html | 32 + .../api-ref/topic_300000002_2.html | 22 + 166 files changed, 31392 insertions(+) create mode 100644 docs/dataartsstudio/api-ref/ALL_META.TXT.json create mode 100644 docs/dataartsstudio/api-ref/CLASS.TXT.json create mode 100644 docs/dataartsstudio/api-ref/CreateAndStartRandomClusterJob.html create mode 100644 docs/dataartsstudio/api-ref/CreateCluster.html create mode 100644 docs/dataartsstudio/api-ref/CreateJob.html create mode 100644 docs/dataartsstudio/api-ref/CreateLink.html create mode 100644 docs/dataartsstudio/api-ref/DeleteCluster.html create mode 100644 docs/dataartsstudio/api-ref/DeleteJob.html create mode 100644 docs/dataartsstudio/api-ref/DeleteLink.html create mode 100644 docs/dataartsstudio/api-ref/ErrorCode.html create mode 100644 docs/dataartsstudio/api-ref/ListClusters.html create mode 100644 docs/dataartsstudio/api-ref/PARAMETERS.txt create mode 100644 docs/dataartsstudio/api-ref/RestartCluster.html create mode 100644 docs/dataartsstudio/api-ref/ShowClusterDetail.html create mode 100644 docs/dataartsstudio/api-ref/ShowJobStatus.html create mode 100644 docs/dataartsstudio/api-ref/ShowJobs.html create mode 100644 docs/dataartsstudio/api-ref/ShowLink.html create mode 100644 docs/dataartsstudio/api-ref/ShowSubmissions.html create mode 100644 docs/dataartsstudio/api-ref/StartCluster.html create mode 100644 docs/dataartsstudio/api-ref/StartJob.html create mode 100644 docs/dataartsstudio/api-ref/StopCluster.html create mode 100644 docs/dataartsstudio/api-ref/StopJob.html create mode 100644 docs/dataartsstudio/api-ref/UpdateJob.html create mode 100644 docs/dataartsstudio/api-ref/UpdateLink.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0001.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0002.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0003.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0004.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0005.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0006.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0007.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0008.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0009.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0010.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0011.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0012.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0013.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0015.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0016.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0049.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0050.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0051.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0052.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0053.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0054.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0055.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0056.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0057.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0058.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0059.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0060.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0061.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0062.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0063.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0064.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0065.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0066.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0067.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0082.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0083.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0084.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0085.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0086.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0087.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0088.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0089.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0090.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0091.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0092.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0093.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0094.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0095.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0096.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0097.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0098.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0099.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0100.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0101.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0102.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0103.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0104.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0105.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0106.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0127.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0260.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0261.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0262.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0263.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0266.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0267.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0268.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0269.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0270.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0271.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0272.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0274.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0276.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0277.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0278.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0280.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0281.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0282.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0283.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0284.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0285.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0286.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0287.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0288.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0289.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0290.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0291.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0292.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0293.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0294.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0295.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0296.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0297.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0298.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0299.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0300.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0301.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0302.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0303.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0304.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0305.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0306.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0307.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0308.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0309.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0310.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0311.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0313.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0314.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0316.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0317.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0318.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0330.html create mode 100644 docs/dataartsstudio/api-ref/dataartsstudio_02_0350.html create mode 100644 docs/dataartsstudio/api-ref/en-us_image_0000001321929240.gif create mode 100644 docs/dataartsstudio/api-ref/en-us_image_0000001322088924.png create mode 100644 docs/dataartsstudio/api-ref/en-us_image_0000001322248848.png create mode 100644 docs/dataartsstudio/api-ref/en-us_image_0000001373088745.png create mode 100644 docs/dataartsstudio/api-ref/en-us_image_0000001373088765.png create mode 100644 docs/dataartsstudio/api-ref/en-us_image_0000001373289273.png create mode 100644 docs/dataartsstudio/api-ref/en-us_image_0000001373289293.png create mode 100644 docs/dataartsstudio/api-ref/en-us_image_0000001373408961.png create mode 100644 docs/dataartsstudio/api-ref/en-us_image_0000001373408969.png create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/caution_3.0-en-us.png create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/danger_3.0-en-us.png create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/delta.gif create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/deltaend.gif create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/icon-arrowdn.gif create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/icon-arrowrt.gif create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/icon-caution.gif create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/icon-danger.gif create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/icon-huawei.gif create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/icon-note.gif create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/icon-notice.gif create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/icon-tip.gif create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/icon-warning.gif create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/note_3.0-en-us.png create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/notice_3.0-en-us.png create mode 100644 docs/dataartsstudio/api-ref/public_sys-resources/warning_3.0-en-us.png create mode 100644 docs/dataartsstudio/api-ref/topic_300000000_3.html create mode 100644 docs/dataartsstudio/api-ref/topic_300000001_2.html create mode 100644 docs/dataartsstudio/api-ref/topic_300000002_2.html diff --git a/docs/dataartsstudio/api-ref/ALL_META.TXT.json b/docs/dataartsstudio/api-ref/ALL_META.TXT.json new file mode 100644 index 000000000..7f28f483b --- /dev/null +++ b/docs/dataartsstudio/api-ref/ALL_META.TXT.json @@ -0,0 +1,1382 @@ +[ + { + "uri":"dataartsstudio_02_0001.html", + "product_code":"dgc", + "code":"1", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Before You Start", + "title":"Before You Start", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0002.html", + "product_code":"dgc", + "code":"2", + "des":"Welcome to DataArts Studio. DataArts Studio is a one-stop operations platform that provides data lifecycle management and intelligent data management for enterprises' dig", + "doc_type":"api", + "kw":"Overview,Before You Start,API Reference", + "title":"Overview", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0003.html", + "product_code":"dgc", + "code":"3", + "des":"DataArts Studio supports Representational State Transfer (REST) APIs, allowing you to call APIs using HTTPS. For details on API calling, see Calling APIs.", + "doc_type":"api", + "kw":"API Calling,Before You Start,API Reference", + "title":"API Calling", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0006.html", + "product_code":"dgc", + "code":"4", + "des":"DomainA domain is created upon successful registration. The domain has full access permissions for all of its cloud services and resources. It can be used to reset user p", + "doc_type":"api", + "kw":"Concepts,Before You Start,API Reference", + "title":"Concepts", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0004.html", + "product_code":"dgc", + "code":"5", + "des":"An endpoint is the request address for calling an API. Endpoints vary depending on services and regions.You can obtain endpoints from Regions and Endpoints.", + "doc_type":"api", + "kw":"Endpoints,Before You Start,API Reference", + "title":"Endpoints", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0314.html", + "product_code":"", + "code":"6", + "des":"You can obtain the project ID and account ID by performing the following steps:Register with and log in to the management console.Hover the cursor on the username in the ", + "doc_type":"", + "kw":"Project ID and Account ID,Before You Start,API Reference", + "title":"Project ID and Account ID", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0350.html", + "product_code":"", + "code":"7", + "des":"To obtain a DataArts Studio instance ID and workspace ID, perform the following steps:On the DataArts Studio console, locate a workspace and click any module, such as Man", + "doc_type":"", + "kw":"DataArts Studio Instance ID and Workspace ID,Before You Start,API Reference", + "title":"DataArts Studio Instance ID and Workspace ID", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0316.html", + "product_code":"", + "code":"8", + "des":"A job ID (jobid) is required for some URLs when an API is called. To obtain a job ID, perform the following operations:Log in to the DataArts Studio console. Locate an in", + "doc_type":"", + "kw":"Data Development Job ID,Before You Start,API Reference", + "title":"Data Development Job ID", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0005.html", + "product_code":"dgc", + "code":"9", + "des":"The restrictions on DataArts Catalog APIs are as follows:CDM jobs carry large volumes of data, which increases the database load. You are advised to periodically delete u", + "doc_type":"api", + "kw":"Constraints,Before You Start,API Reference", + "title":"Constraints", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0007.html", + "product_code":"dgc", + "code":"10", + "des":"DataArts Studio provides self-developed APIs that comply with RESTful API design specifications. You can call those APIs to perform operations on DataArts Studio.", + "doc_type":"api", + "kw":"API Overview,API Reference", + "title":"API Overview", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0008.html", + "product_code":"dgc", + "code":"11", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Calling APIs", + "title":"Calling APIs", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0009.html", + "product_code":"dgc", + "code":"12", + "des":"This section describes the structure of a REST API, and uses the IAM API for obtaining a user token as an example to demonstrate how to call an API. The obtained token ca", + "doc_type":"api", + "kw":"Making an API Request,Calling APIs,API Reference", + "title":"Making an API Request", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0010.html", + "product_code":"dgc", + "code":"13", + "des":"Requests for calling an API can be authenticated using either of the following methods:Token-based authentication: Requests are authenticated using a token.AK/SK-based au", + "doc_type":"api", + "kw":"Authentication,Calling APIs,API Reference", + "title":"Authentication", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0011.html", + "product_code":"dgc", + "code":"14", + "des":"After sending a request, you will receive a response, including a status code, response header, and response body.A status code is a group of digits, ranging from 1xx to ", + "doc_type":"api", + "kw":"Response,Calling APIs,API Reference", + "title":"Response", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0012.html", + "product_code":"dgc", + "code":"15", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Application Cases", + "title":"Application Cases", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0013.html", + "product_code":"dgc", + "code":"16", + "des":"This section describes how to use cURL to call CDM APIs to migrate data from a local MySQL database to DWS in the cloud.Obtaining a TokenCall the API to obtain the user t", + "doc_type":"api", + "kw":"Application Example,Application Cases,API Reference", + "title":"Application Example", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0015.html", + "product_code":"dgc", + "code":"17", + "des":"DataArts Studio helps enterprises quickly build an end-to-end intelligent data system that covers the entire process from data ingestion to data analytics. The system can", + "doc_type":"api", + "kw":"Example of Using Data Development APIs,Application Cases,API Reference", + "title":"Example of Using Data Development APIs", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0016.html", + "product_code":"dgc", + "code":"18", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"DataArts Migration APIs", + "title":"DataArts Migration APIs", + "githuburl":"" + }, + { + "uri":"topic_300000000_3.html", + "product_code":"cdm", + "code":"19", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Cluster Management", + "title":"Cluster Management", + "githuburl":"" + }, + { + "uri":"ShowClusterDetail.html", + "product_code":"cdm", + "code":"20", + "des":"This API is used to query cluster details.GET /v1.1/{project_id}/clusters/{cluster_id}Status code: 200Status code: 200okSee Error Codes.", + "doc_type":"api", + "kw":"Querying Cluster Details,Cluster Management,API Reference", + "title":"Querying Cluster Details", + "githuburl":"" + }, + { + "uri":"DeleteCluster.html", + "product_code":"cdm", + "code":"21", + "des":"This API is used to delete a cluster.DELETE /v1.1/{project_id}/clusters/{cluster_id}Status code: 202Status code: 202AcceptedSee Error Codes.", + "doc_type":"api", + "kw":"Deleting a Cluster,Cluster Management,API Reference", + "title":"Deleting a Cluster", + "githuburl":"" + }, + { + "uri":"RestartCluster.html", + "product_code":"cdm", + "code":"22", + "des":"This API is used to restart a cluster.POST /v1.1/{project_id}/clusters/{cluster_id}/actionStatus code: 200Restarting a ClusterStatus code: 200okSee Error Codes.", + "doc_type":"api", + "kw":"Restarting a Cluster,Cluster Management,API Reference", + "title":"Restarting a Cluster", + "githuburl":"" + }, + { + "uri":"StartCluster.html", + "product_code":"cdm", + "code":"23", + "des":"This API is used to start a cluster.POST /v1.1/{project_id}/clusters/{cluster_id}/actionStatus code: 200Starting a ClusterStatus code: 200okSee Error Codes.", + "doc_type":"api", + "kw":"Starting a Cluster,Cluster Management,API Reference", + "title":"Starting a Cluster", + "githuburl":"" + }, + { + "uri":"StopCluster.html", + "product_code":"cdm", + "code":"24", + "des":"This API is used to stop a cluster.POST /v1.1/{project_id}/clusters/{cluster_id}/actionStatus code: 200Stopping a ClusterStatus code: 200okSee Error Codes.", + "doc_type":"api", + "kw":"Stopping a Cluster,Cluster Management,API Reference", + "title":"Stopping a Cluster", + "githuburl":"" + }, + { + "uri":"CreateCluster.html", + "product_code":"cdm", + "code":"25", + "des":"This API is used to create a cluster.POST /v1.1/{project_id}/clustersStatus code: 202Status code: 202AcceptedSee Error Codes.", + "doc_type":"api", + "kw":"Creating a Cluster,Cluster Management,API Reference", + "title":"Creating a Cluster", + "githuburl":"" + }, + { + "uri":"ListClusters.html", + "product_code":"cdm", + "code":"26", + "des":"This API is used to query the cluster list.GET /v1.1/{project_id}/clustersStatus code: 200Status code: 200okSee Error Codes.", + "doc_type":"api", + "kw":"Querying the Cluster List,Cluster Management,API Reference", + "title":"Querying the Cluster List", + "githuburl":"" + }, + { + "uri":"topic_300000001_2.html", + "product_code":"cdm", + "code":"27", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Job Management", + "title":"Job Management", + "githuburl":"" + }, + { + "uri":"ShowJobs.html", + "product_code":"cdm", + "code":"28", + "des":"This API is used to query jobs.GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}Status code: 200Status code: 200okSee Error Codes.", + "doc_type":"api", + "kw":"Querying a Job,Job Management,API Reference", + "title":"Querying a Job", + "githuburl":"" + }, + { + "uri":"DeleteJob.html", + "product_code":"cdm", + "code":"29", + "des":"This API is used to delete a job.DELETE /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}Status code: 500Status code: 500An internal service error occurred. For", + "doc_type":"api", + "kw":"Deleting a Job,Job Management,API Reference", + "title":"Deleting a Job", + "githuburl":"" + }, + { + "uri":"UpdateJob.html", + "product_code":"cdm", + "code":"30", + "des":"This API is used to modify a job.PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}Status code: 200Status code: 400Status code: 200okStatus code: 400Error co", + "doc_type":"api", + "kw":"Modifying a Job,Job Management,API Reference", + "title":"Modifying a Job", + "githuburl":"" + }, + { + "uri":"CreateAndStartRandomClusterJob.html", + "product_code":"cdm", + "code":"31", + "des":"This API is used to create and execute a job in a random cluster.POST /v1.1/{project_id}/clusters/jobStatus code: 200Status code: 200okSee Error Codes.", + "doc_type":"api", + "kw":"Creating and Executing a Job in a Random Cluster,Job Management,API Reference", + "title":"Creating and Executing a Job in a Random Cluster", + "githuburl":"" + }, + { + "uri":"StopJob.html", + "product_code":"cdm", + "code":"32", + "des":"This API is used to stop a job.PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}/stopStatus code: 200Status code: 200okSee Error Codes.", + "doc_type":"api", + "kw":"Stopping a Job,Job Management,API Reference", + "title":"Stopping a Job", + "githuburl":"" + }, + { + "uri":"CreateJob.html", + "product_code":"cdm", + "code":"33", + "des":"This API is used to create a job in a specified cluster.POST /v1.1/{project_id}/clusters/{cluster_id}/cdm/jobStatus code: 200Status code: 400Status code: 200okStatus code", + "doc_type":"api", + "kw":"Creating a Job in a Specified Cluster,Job Management,API Reference", + "title":"Creating a Job in a Specified Cluster", + "githuburl":"" + }, + { + "uri":"StartJob.html", + "product_code":"cdm", + "code":"34", + "des":"This API is used to start a job.PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}/startStatus code: 200Status code: 200okSee Error Codes.", + "doc_type":"api", + "kw":"Starting a Job,Job Management,API Reference", + "title":"Starting a Job", + "githuburl":"" + }, + { + "uri":"ShowJobStatus.html", + "product_code":"cdm", + "code":"35", + "des":"This API is used to query the job status.GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}/statusStatus code: 200Status code: 200okSee Error Codes.", + "doc_type":"api", + "kw":"Querying Job Status,Job Management,API Reference", + "title":"Querying Job Status", + "githuburl":"" + }, + { + "uri":"ShowSubmissions.html", + "product_code":"cdm", + "code":"36", + "des":"This API is used to query the job execution history.GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/submissionsStatus code: 200Status code: 200okSee Error Codes.", + "doc_type":"api", + "kw":"Querying Job Execution History,Job Management,API Reference", + "title":"Querying Job Execution History", + "githuburl":"" + }, + { + "uri":"topic_300000002_2.html", + "product_code":"cdm", + "code":"37", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Link Management", + "title":"Link Management", + "githuburl":"" + }, + { + "uri":"CreateLink.html", + "product_code":"cdm", + "code":"38", + "des":"This API is used to create a link.POST /v1.1/{project_id}/clusters/{cluster_id}/cdm/linkStatus code: 200Status code: 400Status code: 500Status code: 200OKStatus code: 400", + "doc_type":"api", + "kw":"Creating a Link,Link Management,API Reference", + "title":"Creating a Link", + "githuburl":"" + }, + { + "uri":"ShowLink.html", + "product_code":"cdm", + "code":"39", + "des":"This API is used to query a link.GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/link/{link_name}Status code: 200Status code: 200OKSee Error Codes.", + "doc_type":"api", + "kw":"Querying a Link,Link Management,API Reference", + "title":"Querying a Link", + "githuburl":"" + }, + { + "uri":"DeleteLink.html", + "product_code":"cdm", + "code":"40", + "des":"This API is used to delete a link.DELETE /v1.1/{project_id}/clusters/{cluster_id}/cdm/link/{link_name}Status code: 500Status code: 500An internal service error occurred. ", + "doc_type":"api", + "kw":"Deleting a Link,Link Management,API Reference", + "title":"Deleting a Link", + "githuburl":"" + }, + { + "uri":"UpdateLink.html", + "product_code":"cdm", + "code":"41", + "des":"This API is used to modify a link.PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/link/{link_name}Status code: 200Status code: 500Status code: 200OKStatus code: 500An in", + "doc_type":"api", + "kw":"Modifying a Link,Link Management,API Reference", + "title":"Modifying a Link", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0260.html", + "product_code":"dgc", + "code":"42", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Public Data Structures", + "title":"Public Data Structures", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0261.html", + "product_code":"dgc", + "code":"43", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Link Parameter Description", + "title":"Link Parameter Description", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0262.html", + "product_code":"dgc", + "code":"44", + "des":"By creating a JDBC link, you can extract data from or load data to the following relational databases:Data Warehouse ServiceRDS for MySQLRDS for PostgreSQLRDS for SQL Ser", + "doc_type":"api", + "kw":"Link to a Relational Database,Link Parameter Description,API Reference", + "title":"Link to a Relational Database", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0263.html", + "product_code":"dgc", + "code":"45", + "des":"By creating an OBS link, you can extract files from or load files to OBS. Files in CSV, JSON, and binary format are supported.", + "doc_type":"api", + "kw":"Link to OBS,Link Parameter Description,API Reference", + "title":"Link to OBS", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0266.html", + "product_code":"dgc", + "code":"46", + "des":"By creating an HDFS link, you can extract files from or load files to MRS, FusionInsight HD, or Apache Hadoop. Files in CSV, Parquet, and binary formats are supported.", + "doc_type":"api", + "kw":"Link to HDFS,Link Parameter Description,API Reference", + "title":"Link to HDFS", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0267.html", + "product_code":"dgc", + "code":"47", + "des":"By creating an HBase link, you can extract data from or load data to HBase of MRS, FusionInsight HD, and Apache Hadoop.", + "doc_type":"api", + "kw":"Link to HBase,Link Parameter Description,API Reference", + "title":"Link to HBase", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0268.html", + "product_code":"dgc", + "code":"48", + "des":"By creating a CloudTable link, you can extract data from or load data to CloudTable.", + "doc_type":"api", + "kw":"Link to CloudTable,Link Parameter Description,API Reference", + "title":"Link to CloudTable", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0269.html", + "product_code":"dgc", + "code":"49", + "des":"By creating a Hive link, you can extract data from or load data to Hive of MRS.", + "doc_type":"api", + "kw":"Link to Hive,Link Parameter Description,API Reference", + "title":"Link to Hive", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0270.html", + "product_code":"dgc", + "code":"50", + "des":"By creating an FTP or SFTP link, you are able to extract files from or load files to the FTP or SFTP server. Files in CSV, JSON, and binary format are supported.Parameter", + "doc_type":"api", + "kw":"Link to an FTP or SFTP Server,Link Parameter Description,API Reference", + "title":"Link to an FTP or SFTP Server", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0271.html", + "product_code":"dgc", + "code":"51", + "des":"By creating a MongoDB link, you can extract data from or load data to MongoDB.", + "doc_type":"api", + "kw":"Link to MongoDB,Link Parameter Description,API Reference", + "title":"Link to MongoDB", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0272.html", + "product_code":"dgc", + "code":"52", + "des":"By creating a Redis link, you can extract data from or load data to the Redis server. By creating a DCS link, you can load data to Data Cache Service (DCS), but not extra", + "doc_type":"api", + "kw":"Link to Redis/DCS (to Be Brought Offline),Link Parameter Description,API Reference", + "title":"Link to Redis/DCS (to Be Brought Offline)", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0274.html", + "product_code":"dgc", + "code":"53", + "des":"By creating a Kafka link, you are able to access open source Kafka and migrate data from Kafka to other data sources as required. Currently, only data export from Kafka i", + "doc_type":"api", + "kw":"Link to Kafka,Link Parameter Description,API Reference", + "title":"Link to Kafka", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0276.html", + "product_code":"dgc", + "code":"54", + "des":"By creating an Elasticsearch link, you can extract data from or load data to the Elasticsearch server or Cloud Search Service.", + "doc_type":"api", + "kw":"Link to Elasticsearch/Cloud Search Service,Link Parameter Description,API Reference", + "title":"Link to Elasticsearch/Cloud Search Service", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0277.html", + "product_code":"dgc", + "code":"55", + "des":"By creating a DLI link, you can import data to DLI. Currently, you cannot export data from DLI using CDM.", + "doc_type":"api", + "kw":"Link to DLI,Link Parameter Description,API Reference", + "title":"Link to DLI", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0278.html", + "product_code":"dgc", + "code":"56", + "des":"By creating an OpenTSDB link, you can extract data from and load data to CloudTable OpenTSDB.", + "doc_type":"api", + "kw":"Link to CloudTable OpenTSDB,Link Parameter Description,API Reference", + "title":"Link to CloudTable OpenTSDB", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0280.html", + "product_code":"dgc", + "code":"57", + "des":"By creating a DMS Kafka link, you can connect to Kafka Basic or Kafka Platinum on DMS. Currently, you can only export data from DMS Kafka to Cloud Search Service.", + "doc_type":"api", + "kw":"Link to DMS Kafka,Link Parameter Description,API Reference", + "title":"Link to DMS Kafka", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0281.html", + "product_code":"dgc", + "code":"58", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Source Job Parameters", + "title":"Source Job Parameters", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0282.html", + "product_code":"dgc", + "code":"59", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"From a Relational Database,Source Job Parameters,API Reference", + "title":"From a Relational Database", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0283.html", + "product_code":"dgc", + "code":"60", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"From Object Storage,Source Job Parameters,API Reference", + "title":"From Object Storage", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0284.html", + "product_code":"dgc", + "code":"61", + "des":"HDFS job parameter descriptionParameterMandatoryTypeDescriptionfromJobConfig.inputDirectoryYesStringPath for storing data to be extracted. For example, /data_dir.fromJobC", + "doc_type":"api", + "kw":"From HDFS,Source Job Parameters,API Reference", + "title":"From HDFS", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0285.html", + "product_code":"dgc", + "code":"62", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"From Hive,Source Job Parameters,API Reference", + "title":"From Hive", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0286.html", + "product_code":"dgc", + "code":"63", + "des":"HBase/CloudTable job parameter descriptionParameterMandatoryTypeDescriptionfromJobConfig.tableYesStringName of the table from which data is extracted. For example, cdm.fr", + "doc_type":"api", + "kw":"From HBase/CloudTable,Source Job Parameters,API Reference", + "title":"From HBase/CloudTable", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0287.html", + "product_code":"dgc", + "code":"64", + "des":"Source link job parameters of FTP and SFTP are the same. Table 1 describes the parameters.Source link job parameters of file systemsParameterMandatoryTypeDescriptionfromJ", + "doc_type":"api", + "kw":"From FTP/SFTP/NAS (to Be Brought Offline)/SFS (to Be Brought Offline),Source Job Parameters,API Refe", + "title":"From FTP/SFTP/NAS (to Be Brought Offline)/SFS (to Be Brought Offline)", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0288.html", + "product_code":"dgc", + "code":"65", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"From HTTP/HTTPS,Source Job Parameters,API Reference", + "title":"From HTTP/HTTPS", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0289.html", + "product_code":"dgc", + "code":"66", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"From MongoDB/DDS,Source Job Parameters,API Reference", + "title":"From MongoDB/DDS", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0290.html", + "product_code":"dgc", + "code":"67", + "des":"Redis job parameter descriptionParameterMandatoryTypeDescriptionfromJobConfig.isBatchMigrationNoBooleanWhether to migrate all data in the databasefromJobConfig.keyPrefixY", + "doc_type":"api", + "kw":"From Redis/DCS (to Be Brought Offline),Source Job Parameters,API Reference", + "title":"From Redis/DCS (to Be Brought Offline)", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0291.html", + "product_code":"dgc", + "code":"68", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"From DIS,Source Job Parameters,API Reference", + "title":"From DIS", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0292.html", + "product_code":"dgc", + "code":"69", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"From Kafka,Source Job Parameters,API Reference", + "title":"From Kafka", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0293.html", + "product_code":"dgc", + "code":"70", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"From Elasticsearch/Cloud Search Service,Source Job Parameters,API Reference", + "title":"From Elasticsearch/Cloud Search Service", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0294.html", + "product_code":"dgc", + "code":"71", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"From OpenTSDB,Source Job Parameters,API Reference", + "title":"From OpenTSDB", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0295.html", + "product_code":"dgc", + "code":"72", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Destination Job Parameters", + "title":"Destination Job Parameters", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0296.html", + "product_code":"dgc", + "code":"73", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"To a Relational Database,Destination Job Parameters,API Reference", + "title":"To a Relational Database", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0297.html", + "product_code":"dgc", + "code":"74", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"To OBS,Destination Job Parameters,API Reference", + "title":"To OBS", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0298.html", + "product_code":"dgc", + "code":"75", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"To HDFS,Destination Job Parameters,API Reference", + "title":"To HDFS", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0299.html", + "product_code":"dgc", + "code":"76", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"To Hive,Destination Job Parameters,API Reference", + "title":"To Hive", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0300.html", + "product_code":"dgc", + "code":"77", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"To HBase/CloudTable,Destination Job Parameters,API Reference", + "title":"To HBase/CloudTable", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0301.html", + "product_code":"dgc", + "code":"78", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"To FTP/SFTP/NAS (to Be Brought Offline)/SFS (to Be Brought Offline),Destination Job Parameters,API R", + "title":"To FTP/SFTP/NAS (to Be Brought Offline)/SFS (to Be Brought Offline)", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0302.html", + "product_code":"dgc", + "code":"79", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"To DDS,Destination Job Parameters,API Reference", + "title":"To DDS", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0303.html", + "product_code":"dgc", + "code":"80", + "des":"Parameter descriptionParameterMandatoryTypeDescriptiontoJobConfig.isBatchMigrationNoBooleanWhether to migrate all data in the databasetoJobConfig.shouldClearDatabaseNoBoo", + "doc_type":"api", + "kw":"To DCS,Destination Job Parameters,API Reference", + "title":"To DCS", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0304.html", + "product_code":"dgc", + "code":"81", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"To Elasticsearch/Cloud Search Service,Destination Job Parameters,API Reference", + "title":"To Elasticsearch/Cloud Search Service", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0305.html", + "product_code":"dgc", + "code":"82", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"To DLI,Destination Job Parameters,API Reference", + "title":"To DLI", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0306.html", + "product_code":"dgc", + "code":"83", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"To DIS,Destination Job Parameters,API Reference", + "title":"To DIS", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0307.html", + "product_code":"dgc", + "code":"84", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"To OpenTSDB,Destination Job Parameters,API Reference", + "title":"To OpenTSDB", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0308.html", + "product_code":"dgc", + "code":"85", + "des":"When Creating a Job in a Specified Cluster or Creating and Executing a Job in a Random Cluster, the driver-config-values parameter specifies the job configuration, which ", + "doc_type":"api", + "kw":"Job Parameter Description,Public Data Structures,API Reference", + "title":"Job Parameter Description", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0127.html", + "product_code":"dgc", + "code":"86", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"DataArts Factory APIs", + "title":"DataArts Factory APIs", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0049.html", + "product_code":"dgc", + "code":"87", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Connection Management APIs", + "title":"Connection Management APIs", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0050.html", + "product_code":"dgc", + "code":"88", + "des":"This API is used to create a connection. The supported connection types include DWS, DLI, Spark SQL, RDS, CloudTable, and Hive.URI formatPOST /v1/{project_id}/connections", + "doc_type":"api", + "kw":"Creating a Connection,Connection Management APIs,API Reference", + "title":"Creating a Connection", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0051.html", + "product_code":"dgc", + "code":"89", + "des":"This API is used to query a connection list.URI formatGET /v1/{project_id}/connections?offset={offset}&limit={limit}&connectionName={connectionName}GET /v1/{project_id}/c", + "doc_type":"api", + "kw":"Querying a Connection List,Connection Management APIs,API Reference", + "title":"Querying a Connection List", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0052.html", + "product_code":"dgc", + "code":"90", + "des":"This API is used to query configuration details of a specific connection.URI formatGET /v1/{project_id}/connections/{connection_name}GET /v1/{project_id}/connections/{con", + "doc_type":"api", + "kw":"Viewing Connection Details,Connection Management APIs,API Reference", + "title":"Viewing Connection Details", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0053.html", + "product_code":"dgc", + "code":"91", + "des":"This API is used to edit a connection.URI formatPUT /v1/{project_id}/connections/{connection_name}?ischeck=truePUT /v1/{project_id}/connections/{connection_name}?ischeck=", + "doc_type":"api", + "kw":"Editing a Connection,Connection Management APIs,API Reference", + "title":"Editing a Connection", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0054.html", + "product_code":"dgc", + "code":"92", + "des":"This API is used to delete a connection.URI formatDELETE /v1/{project_id}/connections/{connection_name}DELETE /v1/{project_id}/connections/{connection_name}Parameter desc", + "doc_type":"api", + "kw":"Deleting a Connection,Connection Management APIs,API Reference", + "title":"Deleting a Connection", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0055.html", + "product_code":"dgc", + "code":"93", + "des":"This API is used to export all connection information that is compressed in ZIP format.URI formatPOST /v1/{project_id}/connections/exportPOST /v1/{project_id}/connections", + "doc_type":"api", + "kw":"Exporting a Connection,Connection Management APIs,API Reference", + "title":"Exporting a Connection", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0056.html", + "product_code":"dgc", + "code":"94", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Script Development APIs", + "title":"Script Development APIs", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0057.html", + "product_code":"dgc", + "code":"95", + "des":"This API is used to delete a specific script.URI formatDELETE /v1/{project_id}/scripts/{script_name}DELETE /v1/{project_id}/scripts/{script_name}Parameter descriptionURI ", + "doc_type":"api", + "kw":"Deleting a Script,Script Development APIs,API Reference", + "title":"Deleting a Script", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0058.html", + "product_code":"dgc", + "code":"96", + "des":"This API is used to execute a specific script, which can be a DWS SQL, DLI SQL, RDS SQL, Flink SQL, Hive SQL, Presto SQL, or Spark SQL script. A script instance is genera", + "doc_type":"api", + "kw":"Executing a Script,Script Development APIs,API Reference", + "title":"Executing a Script", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0059.html", + "product_code":"dgc", + "code":"97", + "des":"This API is used to stop executing a script instance.URI formatPOST /v1/{project_id}/scripts/{script_name}/instances/{instance_id}/stopPOST /v1/{project_id}/scripts/{scri", + "doc_type":"api", + "kw":"Stopping Executing a Script Instance,Script Development APIs,API Reference", + "title":"Stopping Executing a Script Instance", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0060.html", + "product_code":"dgc", + "code":"98", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Resource Management APIs", + "title":"Resource Management APIs", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0061.html", + "product_code":"dgc", + "code":"99", + "des":"This API is used to delete a resource.URI formatDELETE /v1/{project_id}/resources/{resource_id}DELETE /v1/{project_id}/resources/{resource_id}Parameter descriptionURI par", + "doc_type":"api", + "kw":"Deleting a Resource,Resource Management APIs,API Reference", + "title":"Deleting a Resource", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0062.html", + "product_code":"dgc", + "code":"100", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Job Development APIs", + "title":"Job Development APIs", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0063.html", + "product_code":"dgc", + "code":"101", + "des":"This API is used to check whether there are jobs and scripts in the job file to be imported from OBS to DLF.URI formatPOST /v1/{project_id}/jobs/check-filePOST /v1/{proje", + "doc_type":"api", + "kw":"Viewing a Job File,Job Development APIs,API Reference", + "title":"Viewing a Job File", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0064.html", + "product_code":"dgc", + "code":"102", + "des":"This API is used to stop a job.URI formatPOST /v1/{project_id}/jobs/{job_name}/stopPOST /v1/{project_id}/jobs/{job_name}/stopParameter descriptionURI parametersParamete", + "doc_type":"api", + "kw":"Stopping a Job,Job Development APIs,API Reference", + "title":"Stopping a Job", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0065.html", + "product_code":"dgc", + "code":"103", + "des":"This API is used to delete a job.URI formatDELETE /v1/{project_id}/jobs/{job_name}DELETE /v1/{project_id}/jobs/{job_name}Parameter descriptionURI parametersParameterManda", + "doc_type":"api", + "kw":"Deleting a Job,Job Development APIs,API Reference", + "title":"Deleting a Job", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0066.html", + "product_code":"dgc", + "code":"104", + "des":"This API is used to stop a specific job instance. A job instance can be stopped only when it is in the running state.URI formatPOST /v1/{project_id}/jobs/{job_name}/insta", + "doc_type":"api", + "kw":"Stopping a Job Instance,Job Development APIs,API Reference", + "title":"Stopping a Job Instance", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0067.html", + "product_code":"dgc", + "code":"105", + "des":"This API is used to restart a specific job instance. A job instance can be restarted only when it is in the successful, failed, or canceled state.URI formatPOST /v1/{proj", + "doc_type":"api", + "kw":"Restarting a Job Instance,Job Development APIs,API Reference", + "title":"Restarting a Job Instance", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0082.html", + "product_code":"dgc", + "code":"106", + "des":"Table 1 describes common request headers.Table 2 describes common response headers.", + "doc_type":"api", + "kw":"Data Structure,DataArts Factory APIs,API Reference", + "title":"Data Structure", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0083.html", + "product_code":"dgc", + "code":"107", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"APIs to Be Taken Offline", + "title":"APIs to Be Taken Offline", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0084.html", + "product_code":"dgc", + "code":"108", + "des":"This API is used to create a job. A job consists of one or more nodes, such as Hive SQL and CDM Job nodes. DLF supports two types of jobs: batch jobs and real-time jobs.U", + "doc_type":"api", + "kw":"Creating a Job,APIs to Be Taken Offline,API Reference", + "title":"Creating a Job", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0085.html", + "product_code":"dgc", + "code":"109", + "des":"This API is used to edit a job.URI formatPUT /v1/{project_id}/jobs/{job_name}PUT /v1/{project_id}/jobs/{job_name}Parameter descriptionURI parametersParameterMandatoryType", + "doc_type":"api", + "kw":"Editing a Job,APIs to Be Taken Offline,API Reference", + "title":"Editing a Job", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0086.html", + "product_code":"dgc", + "code":"110", + "des":"This API is used to query a list of batch or real-time jobs. A maximum of 1000 jobs can be returned for each query.URI formatGET /v1/{project_id}/jobs?jobType={jobType}&o", + "doc_type":"api", + "kw":"Viewing a Job List,APIs to Be Taken Offline,API Reference", + "title":"Viewing a Job List", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0087.html", + "product_code":"dgc", + "code":"111", + "des":"This API is used to view job details.URI formatGET /v1/{project_id}/jobs/{name}GET /v1/{project_id}/jobs/{name}Parameter descriptionURI parameterParameterMandatoryTypeDes", + "doc_type":"api", + "kw":"Viewing Job Details,APIs to Be Taken Offline,API Reference", + "title":"Viewing Job Details", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0088.html", + "product_code":"dgc", + "code":"112", + "des":"This API is used to export a job, including job definitions, job dependency scripts, and CDM job definitions.URI formatPOST /v1/{project_id}/jobs/{name}/exportPOST /v1/{p", + "doc_type":"api", + "kw":"Exporting a Job,APIs to Be Taken Offline,API Reference", + "title":"Exporting a Job", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0089.html", + "product_code":"dgc", + "code":"113", + "des":"This API is used to batch export jobs, including job dependency scripts and CDM job definitions.URI formatPOST /v1/{project_id}/jobs/batch-exportPOST /v1/{project_id}/job", + "doc_type":"api", + "kw":"Batch Exporting Jobs,APIs to Be Taken Offline,API Reference", + "title":"Batch Exporting Jobs", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0090.html", + "product_code":"dgc", + "code":"114", + "des":"This API is used to import one or more job files from OBS to DLF.Before using this API, store job files in OBS buckets.URI formatPOST /v1/{project_id}/jobs/importPOST /", + "doc_type":"api", + "kw":"Importing a Job,APIs to Be Taken Offline,API Reference", + "title":"Importing a Job", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0091.html", + "product_code":"dgc", + "code":"115", + "des":"This API is used to execute a job immediately and check whether the job can be executed successfully.URI formatPOST /v1/{project_id}/jobs/{job_name}/run-immediatePOST /", + "doc_type":"api", + "kw":"Executing a Job Immediately,APIs to Be Taken Offline,API Reference", + "title":"Executing a Job Immediately", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0092.html", + "product_code":"dgc", + "code":"116", + "des":"This API is used to start a job.URI formatPOST /v1/{project_id}/jobs/{name}/startPOST /v1/{project_id}/jobs/{name}/startParameter descriptionURI parametersParameterMand", + "doc_type":"api", + "kw":"Starting a Job,APIs to Be Taken Offline,API Reference", + "title":"Starting a Job", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0093.html", + "product_code":"dgc", + "code":"117", + "des":"This API is used to view running status of a real-time job.URI formatGET /v1/{project_id}/jobs/{job_name}/statusGET /v1/{project_id}/jobs/{job_name}/statusParameter descr", + "doc_type":"api", + "kw":"Viewing Running Status of a Real-Time Job,APIs to Be Taken Offline,API Reference", + "title":"Viewing Running Status of a Real-Time Job", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0094.html", + "product_code":"dgc", + "code":"118", + "des":"This API is used to view a job instance list.A job instance is generated each time you run a batch job for which periodic scheduling or event-based scheduling is configur", + "doc_type":"api", + "kw":"Viewing a Job Instance List,APIs to Be Taken Offline,API Reference", + "title":"Viewing a Job Instance List", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0095.html", + "product_code":"dgc", + "code":"119", + "des":"This API is used to view job instance details, including the execution information about each node in a job instance.URI formatGET /v1/{project_id}/jobs/{job_name}/instan", + "doc_type":"api", + "kw":"Viewing Job Instance Details,APIs to Be Taken Offline,API Reference", + "title":"Viewing Job Instance Details", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0096.html", + "product_code":"dgc", + "code":"120", + "des":"This API is used to query details about asynchronous tasks.URI formatGET /v1/{project_id}/system-tasks/{task_id}GET /v1/{project_id}/system-tasks/{task_id}Parameter descr", + "doc_type":"api", + "kw":"Querying a System Task,APIs to Be Taken Offline,API Reference", + "title":"Querying a System Task", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0097.html", + "product_code":"dgc", + "code":"121", + "des":"This API is used to create a script. Currently, the following script types are supported: DLI SQL, Flink SQL, RDS SQL, Spark SQL, Hive SQL, DWS SQL, Shell, and Presto.URI", + "doc_type":"api", + "kw":"Creating a Script,APIs to Be Taken Offline,API Reference", + "title":"Creating a Script", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0098.html", + "product_code":"dgc", + "code":"122", + "des":"This API is used to modify the configuration items or script contents of a script.When modifying a script, specify the name of the script to be modified.The script name a", + "doc_type":"api", + "kw":"Modifying a Script,APIs to Be Taken Offline,API Reference", + "title":"Modifying a Script", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0099.html", + "product_code":"dgc", + "code":"123", + "des":"This API is used to query a script, including the script type and script content.URI formatGET /v1/{project_id}/script/{script_name}GET /v1/{project_id}/script/{script_na", + "doc_type":"api", + "kw":"Querying a Script,APIs to Be Taken Offline,API Reference", + "title":"Querying a Script", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0100.html", + "product_code":"dgc", + "code":"124", + "des":"This API is used to query the script list. A maximum of 1000 scripts can be returned for each query.URI formatGET /v1/{project_id}/scripts?offset={offset}&limit={limit}&s", + "doc_type":"api", + "kw":"Querying a Script List,APIs to Be Taken Offline,API Reference", + "title":"Querying a Script List", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0101.html", + "product_code":"dgc", + "code":"125", + "des":"This API is used to obtain the execution status and result of a script instance.During the query, specify the script name and script instance ID.URI formatGET /v1/{projec", + "doc_type":"api", + "kw":"Querying the Execution Result of a Script Instance,APIs to Be Taken Offline,API Reference", + "title":"Querying the Execution Result of a Script Instance", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0102.html", + "product_code":"dgc", + "code":"126", + "des":"This API is used to create a resource. Types of nodes, including DLI Spark, MRS Spark, and MRS MapReduce, can reference files such as JAR and properties through resources", + "doc_type":"api", + "kw":"Creating a Resource,APIs to Be Taken Offline,API Reference", + "title":"Creating a Resource", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0103.html", + "product_code":"dgc", + "code":"127", + "des":"This API is used to modify a specific resource. When modifying the resource, specify the resource ID.The resource type and directory cannot be modified.URI formatPUT /v1/", + "doc_type":"api", + "kw":"Modifying a Resource,APIs to Be Taken Offline,API Reference", + "title":"Modifying a Resource", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0104.html", + "product_code":"dgc", + "code":"128", + "des":"This API is used to query resource details. A resource contains various files such as JAR, ZIP, and properties files. A created resource can be used in job nodes such as ", + "doc_type":"api", + "kw":"Querying a Resource,APIs to Be Taken Offline,API Reference", + "title":"Querying a Resource", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0105.html", + "product_code":"dgc", + "code":"129", + "des":"This API is used to query a resource list. During the query, you can specify the page number and the maximum number of records on each page.URI formatGET /v1/{project_id}", + "doc_type":"api", + "kw":"Querying a Resource List,APIs to Be Taken Offline,API Reference", + "title":"Querying a Resource List", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0106.html", + "product_code":"dgc", + "code":"130", + "des":"This API is used to import one or more connection files from OBS to the Data Development module. Before using this API, store connection files in OBS buckets.URI formatPO", + "doc_type":"api", + "kw":"Importing a Connection,APIs to Be Taken Offline,API Reference", + "title":"Importing a Connection", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0309.html", + "product_code":"dgc", + "code":"131", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"api", + "kw":"Appendix", + "title":"Appendix", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0318.html", + "product_code":"dgc", + "code":"132", + "des":"Table 1 describes common request headers.Table 2 describes common response headers.", + "doc_type":"api", + "kw":"Common Message Headers,Appendix,API Reference", + "title":"Common Message Headers", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0310.html", + "product_code":"dgc", + "code":"133", + "des":"A status code consists of three digits. The first digit defines the class of a response. There are five values for the first digit:1xx: indication information, indicating", + "doc_type":"api", + "kw":"Status Codes,Appendix,API Reference", + "title":"Status Codes", + "githuburl":"" + }, + { + "uri":"ErrorCode.html", + "product_code":"", + "code":"134", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"", + "kw":"Error Codes", + "title":"Error Codes", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0311.html", + "product_code":"dgc", + "code":"135", + "des":"If an error occurs in API calling, no result is returned. Identify the error cause based on the error codes of each API. If an error occurs in API calling, HTTP status co", + "doc_type":"api", + "kw":"CDM Error Codes,Error Codes,API Reference", + "title":"CDM Error Codes", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0313.html", + "product_code":"dgc", + "code":"136", + "des":"The error response is in the following format:{\"error_code\":\"DLF.0100\",\"error_msg\":\"The job not found\"}Table 1 describes the error codes.", + "doc_type":"api", + "kw":"DLF Error Codes,Error Codes,API Reference", + "title":"DLF Error Codes", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0317.html", + "product_code":"dgc", + "code":"137", + "des":"The response messages of the job export API and connection export API are streams that need to be converted to files. For details, see the following sample code:", + "doc_type":"api", + "kw":"Parsing a Stream in a Response Message,Appendix,API Reference", + "title":"Parsing a Stream in a Response Message", + "githuburl":"" + }, + { + "uri":"dataartsstudio_02_0330.html", + "product_code":"", + "code":"138", + "des":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "doc_type":"", + "kw":"Change History,API Reference", + "title":"Change History", + "githuburl":"" + } +] \ No newline at end of file diff --git a/docs/dataartsstudio/api-ref/CLASS.TXT.json b/docs/dataartsstudio/api-ref/CLASS.TXT.json new file mode 100644 index 000000000..172ceb845 --- /dev/null +++ b/docs/dataartsstudio/api-ref/CLASS.TXT.json @@ -0,0 +1,1244 @@ +[ + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Before You Start", + "uri":"dataartsstudio_02_0001.html", + "doc_type":"api", + "p_code":"", + "code":"1" + }, + { + "desc":"Welcome to DataArts Studio. DataArts Studio is a one-stop operations platform that provides data lifecycle management and intelligent data management for enterprises' dig", + "product_code":"dataartsstudio", + "title":"Overview", + "uri":"dataartsstudio_02_0002.html", + "doc_type":"api", + "p_code":"1", + "code":"2" + }, + { + "desc":"DataArts Studio supports Representational State Transfer (REST) APIs, allowing you to call APIs using HTTPS. For details on API calling, see Calling APIs.", + "product_code":"dataartsstudio", + "title":"API Calling", + "uri":"dataartsstudio_02_0003.html", + "doc_type":"api", + "p_code":"1", + "code":"3" + }, + { + "desc":"DomainA domain is created upon successful registration. The domain has full access permissions for all of its cloud services and resources. It can be used to reset user p", + "product_code":"dataartsstudio", + "title":"Concepts", + "uri":"dataartsstudio_02_0006.html", + "doc_type":"api", + "p_code":"1", + "code":"4" + }, + { + "desc":"An endpoint is the request address for calling an API. Endpoints vary depending on services and regions.You can obtain endpoints from Regions and Endpoints.", + "product_code":"dataartsstudio", + "title":"Endpoints", + "uri":"dataartsstudio_02_0004.html", + "doc_type":"api", + "p_code":"1", + "code":"5" + }, + { + "desc":"You can obtain the project ID and account ID by performing the following steps:Register with and log in to the management console.Hover the cursor on the username in the ", + "product_code":"dataartsstudio", + "title":"Project ID and Account ID", + "uri":"dataartsstudio_02_0314.html", + "doc_type":"api", + "p_code":"1", + "code":"6" + }, + { + "desc":"To obtain a DataArts Studio instance ID and workspace ID, perform the following steps:On the DataArts Studio console, locate a workspace and click any module, such as Man", + "product_code":"dataartsstudio", + "title":"DataArts Studio Instance ID and Workspace ID", + "uri":"dataartsstudio_02_0350.html", + "doc_type":"api", + "p_code":"1", + "code":"7" + }, + { + "desc":"A job ID (jobid) is required for some URLs when an API is called. To obtain a job ID, perform the following operations:Log in to the DataArts Studio console. Locate an in", + "product_code":"dataartsstudio", + "title":"Data Development Job ID", + "uri":"dataartsstudio_02_0316.html", + "doc_type":"api", + "p_code":"1", + "code":"8" + }, + { + "desc":"The restrictions on DataArts Catalog APIs are as follows:CDM jobs carry large volumes of data, which increases the database load. You are advised to periodically delete u", + "product_code":"dataartsstudio", + "title":"Constraints", + "uri":"dataartsstudio_02_0005.html", + "doc_type":"api", + "p_code":"1", + "code":"9" + }, + { + "desc":"DataArts Studio provides self-developed APIs that comply with RESTful API design specifications. You can call those APIs to perform operations on DataArts Studio.", + "product_code":"dataartsstudio", + "title":"API Overview", + "uri":"dataartsstudio_02_0007.html", + "doc_type":"api", + "p_code":"", + "code":"10" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Calling APIs", + "uri":"dataartsstudio_02_0008.html", + "doc_type":"api", + "p_code":"", + "code":"11" + }, + { + "desc":"This section describes the structure of a REST API, and uses the IAM API for obtaining a user token as an example to demonstrate how to call an API. The obtained token ca", + "product_code":"dataartsstudio", + "title":"Making an API Request", + "uri":"dataartsstudio_02_0009.html", + "doc_type":"api", + "p_code":"11", + "code":"12" + }, + { + "desc":"Requests for calling an API can be authenticated using either of the following methods:Token-based authentication: Requests are authenticated using a token.AK/SK-based au", + "product_code":"dataartsstudio", + "title":"Authentication", + "uri":"dataartsstudio_02_0010.html", + "doc_type":"api", + "p_code":"11", + "code":"13" + }, + { + "desc":"After sending a request, you will receive a response, including a status code, response header, and response body.A status code is a group of digits, ranging from 1xx to ", + "product_code":"dataartsstudio", + "title":"Response", + "uri":"dataartsstudio_02_0011.html", + "doc_type":"api", + "p_code":"11", + "code":"14" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Application Cases", + "uri":"dataartsstudio_02_0012.html", + "doc_type":"api", + "p_code":"", + "code":"15" + }, + { + "desc":"This section describes how to use cURL to call CDM APIs to migrate data from a local MySQL database to DWS in the cloud.Obtaining a TokenCall the API to obtain the user t", + "product_code":"dataartsstudio", + "title":"Application Example", + "uri":"dataartsstudio_02_0013.html", + "doc_type":"api", + "p_code":"15", + "code":"16" + }, + { + "desc":"DataArts Studio helps enterprises quickly build an end-to-end intelligent data system that covers the entire process from data ingestion to data analytics. The system can", + "product_code":"dataartsstudio", + "title":"Example of Using Data Development APIs", + "uri":"dataartsstudio_02_0015.html", + "doc_type":"api", + "p_code":"15", + "code":"17" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"DataArts Migration APIs", + "uri":"dataartsstudio_02_0016.html", + "doc_type":"api", + "p_code":"", + "code":"18" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Cluster Management", + "uri":"topic_300000000_3.html", + "doc_type":"api", + "p_code":"18", + "code":"19" + }, + { + "desc":"This API is used to query cluster details.GET /v1.1/{project_id}/clusters/{cluster_id}Status code: 200Status code: 200okSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Querying Cluster Details", + "uri":"ShowClusterDetail.html", + "doc_type":"api", + "p_code":"19", + "code":"20" + }, + { + "desc":"This API is used to delete a cluster.DELETE /v1.1/{project_id}/clusters/{cluster_id}Status code: 202Status code: 202AcceptedSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Deleting a Cluster", + "uri":"DeleteCluster.html", + "doc_type":"api", + "p_code":"19", + "code":"21" + }, + { + "desc":"This API is used to restart a cluster.POST /v1.1/{project_id}/clusters/{cluster_id}/actionStatus code: 200Restarting a ClusterStatus code: 200okSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Restarting a Cluster", + "uri":"RestartCluster.html", + "doc_type":"api", + "p_code":"19", + "code":"22" + }, + { + "desc":"This API is used to start a cluster.POST /v1.1/{project_id}/clusters/{cluster_id}/actionStatus code: 200Starting a ClusterStatus code: 200okSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Starting a Cluster", + "uri":"StartCluster.html", + "doc_type":"api", + "p_code":"19", + "code":"23" + }, + { + "desc":"This API is used to stop a cluster.POST /v1.1/{project_id}/clusters/{cluster_id}/actionStatus code: 200Stopping a ClusterStatus code: 200okSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Stopping a Cluster", + "uri":"StopCluster.html", + "doc_type":"api", + "p_code":"19", + "code":"24" + }, + { + "desc":"This API is used to create a cluster.POST /v1.1/{project_id}/clustersStatus code: 202Status code: 202AcceptedSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Creating a Cluster", + "uri":"CreateCluster.html", + "doc_type":"api", + "p_code":"19", + "code":"25" + }, + { + "desc":"This API is used to query the cluster list.GET /v1.1/{project_id}/clustersStatus code: 200Status code: 200okSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Querying the Cluster List", + "uri":"ListClusters.html", + "doc_type":"api", + "p_code":"19", + "code":"26" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Job Management", + "uri":"topic_300000001_2.html", + "doc_type":"api", + "p_code":"18", + "code":"27" + }, + { + "desc":"This API is used to query jobs.GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}Status code: 200Status code: 200okSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Querying a Job", + "uri":"ShowJobs.html", + "doc_type":"api", + "p_code":"27", + "code":"28" + }, + { + "desc":"This API is used to delete a job.DELETE /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}Status code: 500Status code: 500An internal service error occurred. For", + "product_code":"dataartsstudio", + "title":"Deleting a Job", + "uri":"DeleteJob.html", + "doc_type":"api", + "p_code":"27", + "code":"29" + }, + { + "desc":"This API is used to modify a job.PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}Status code: 200Status code: 400Status code: 200okStatus code: 400Error co", + "product_code":"dataartsstudio", + "title":"Modifying a Job", + "uri":"UpdateJob.html", + "doc_type":"api", + "p_code":"27", + "code":"30" + }, + { + "desc":"This API is used to create and execute a job in a random cluster.POST /v1.1/{project_id}/clusters/jobStatus code: 200Status code: 200okSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Creating and Executing a Job in a Random Cluster", + "uri":"CreateAndStartRandomClusterJob.html", + "doc_type":"api", + "p_code":"27", + "code":"31" + }, + { + "desc":"This API is used to stop a job.PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}/stopStatus code: 200Status code: 200okSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Stopping a Job", + "uri":"StopJob.html", + "doc_type":"api", + "p_code":"27", + "code":"32" + }, + { + "desc":"This API is used to create a job in a specified cluster.POST /v1.1/{project_id}/clusters/{cluster_id}/cdm/jobStatus code: 200Status code: 400Status code: 200okStatus code", + "product_code":"dataartsstudio", + "title":"Creating a Job in a Specified Cluster", + "uri":"CreateJob.html", + "doc_type":"api", + "p_code":"27", + "code":"33" + }, + { + "desc":"This API is used to start a job.PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}/startStatus code: 200Status code: 200okSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Starting a Job", + "uri":"StartJob.html", + "doc_type":"api", + "p_code":"27", + "code":"34" + }, + { + "desc":"This API is used to query the job status.GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}/statusStatus code: 200Status code: 200okSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Querying Job Status", + "uri":"ShowJobStatus.html", + "doc_type":"api", + "p_code":"27", + "code":"35" + }, + { + "desc":"This API is used to query the job execution history.GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/submissionsStatus code: 200Status code: 200okSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Querying Job Execution History", + "uri":"ShowSubmissions.html", + "doc_type":"api", + "p_code":"27", + "code":"36" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Link Management", + "uri":"topic_300000002_2.html", + "doc_type":"api", + "p_code":"18", + "code":"37" + }, + { + "desc":"This API is used to create a link.POST /v1.1/{project_id}/clusters/{cluster_id}/cdm/linkStatus code: 200Status code: 400Status code: 500Status code: 200OKStatus code: 400", + "product_code":"dataartsstudio", + "title":"Creating a Link", + "uri":"CreateLink.html", + "doc_type":"api", + "p_code":"37", + "code":"38" + }, + { + "desc":"This API is used to query a link.GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/link/{link_name}Status code: 200Status code: 200OKSee Error Codes.", + "product_code":"dataartsstudio", + "title":"Querying a Link", + "uri":"ShowLink.html", + "doc_type":"api", + "p_code":"37", + "code":"39" + }, + { + "desc":"This API is used to delete a link.DELETE /v1.1/{project_id}/clusters/{cluster_id}/cdm/link/{link_name}Status code: 500Status code: 500An internal service error occurred. ", + "product_code":"dataartsstudio", + "title":"Deleting a Link", + "uri":"DeleteLink.html", + "doc_type":"api", + "p_code":"37", + "code":"40" + }, + { + "desc":"This API is used to modify a link.PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/link/{link_name}Status code: 200Status code: 500Status code: 200OKStatus code: 500An in", + "product_code":"dataartsstudio", + "title":"Modifying a Link", + "uri":"UpdateLink.html", + "doc_type":"api", + "p_code":"37", + "code":"41" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Public Data Structures", + "uri":"dataartsstudio_02_0260.html", + "doc_type":"api", + "p_code":"18", + "code":"42" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Link Parameter Description", + "uri":"dataartsstudio_02_0261.html", + "doc_type":"api", + "p_code":"42", + "code":"43" + }, + { + "desc":"By creating a JDBC link, you can extract data from or load data to the following relational databases:Data Warehouse ServiceRDS for MySQLRDS for PostgreSQLRDS for SQL Ser", + "product_code":"dataartsstudio", + "title":"Link to a Relational Database", + "uri":"dataartsstudio_02_0262.html", + "doc_type":"api", + "p_code":"43", + "code":"44" + }, + { + "desc":"By creating an OBS link, you can extract files from or load files to OBS. Files in CSV, JSON, and binary format are supported.", + "product_code":"dataartsstudio", + "title":"Link to OBS", + "uri":"dataartsstudio_02_0263.html", + "doc_type":"api", + "p_code":"43", + "code":"45" + }, + { + "desc":"By creating an HDFS link, you can extract files from or load files to MRS, FusionInsight HD, or Apache Hadoop. Files in CSV, Parquet, and binary formats are supported.", + "product_code":"dataartsstudio", + "title":"Link to HDFS", + "uri":"dataartsstudio_02_0266.html", + "doc_type":"api", + "p_code":"43", + "code":"46" + }, + { + "desc":"By creating an HBase link, you can extract data from or load data to HBase of MRS, FusionInsight HD, and Apache Hadoop.", + "product_code":"dataartsstudio", + "title":"Link to HBase", + "uri":"dataartsstudio_02_0267.html", + "doc_type":"api", + "p_code":"43", + "code":"47" + }, + { + "desc":"By creating a CloudTable link, you can extract data from or load data to CloudTable.", + "product_code":"dataartsstudio", + "title":"Link to CloudTable", + "uri":"dataartsstudio_02_0268.html", + "doc_type":"api", + "p_code":"43", + "code":"48" + }, + { + "desc":"By creating a Hive link, you can extract data from or load data to Hive of MRS.", + "product_code":"dataartsstudio", + "title":"Link to Hive", + "uri":"dataartsstudio_02_0269.html", + "doc_type":"api", + "p_code":"43", + "code":"49" + }, + { + "desc":"By creating an FTP or SFTP link, you are able to extract files from or load files to the FTP or SFTP server. Files in CSV, JSON, and binary format are supported.Parameter", + "product_code":"dataartsstudio", + "title":"Link to an FTP or SFTP Server", + "uri":"dataartsstudio_02_0270.html", + "doc_type":"api", + "p_code":"43", + "code":"50" + }, + { + "desc":"By creating a MongoDB link, you can extract data from or load data to MongoDB.", + "product_code":"dataartsstudio", + "title":"Link to MongoDB", + "uri":"dataartsstudio_02_0271.html", + "doc_type":"api", + "p_code":"43", + "code":"51" + }, + { + "desc":"By creating a Redis link, you can extract data from or load data to the Redis server. By creating a DCS link, you can load data to Data Cache Service (DCS), but not extra", + "product_code":"dataartsstudio", + "title":"Link to Redis/DCS (to Be Brought Offline)", + "uri":"dataartsstudio_02_0272.html", + "doc_type":"api", + "p_code":"43", + "code":"52" + }, + { + "desc":"By creating a Kafka link, you are able to access open source Kafka and migrate data from Kafka to other data sources as required. Currently, only data export from Kafka i", + "product_code":"dataartsstudio", + "title":"Link to Kafka", + "uri":"dataartsstudio_02_0274.html", + "doc_type":"api", + "p_code":"43", + "code":"53" + }, + { + "desc":"By creating an Elasticsearch link, you can extract data from or load data to the Elasticsearch server or Cloud Search Service.", + "product_code":"dataartsstudio", + "title":"Link to Elasticsearch/Cloud Search Service", + "uri":"dataartsstudio_02_0276.html", + "doc_type":"api", + "p_code":"43", + "code":"54" + }, + { + "desc":"By creating a DLI link, you can import data to DLI. Currently, you cannot export data from DLI using CDM.", + "product_code":"dataartsstudio", + "title":"Link to DLI", + "uri":"dataartsstudio_02_0277.html", + "doc_type":"api", + "p_code":"43", + "code":"55" + }, + { + "desc":"By creating an OpenTSDB link, you can extract data from and load data to CloudTable OpenTSDB.", + "product_code":"dataartsstudio", + "title":"Link to CloudTable OpenTSDB", + "uri":"dataartsstudio_02_0278.html", + "doc_type":"api", + "p_code":"43", + "code":"56" + }, + { + "desc":"By creating a DMS Kafka link, you can connect to Kafka Basic or Kafka Platinum on DMS. Currently, you can only export data from DMS Kafka to Cloud Search Service.", + "product_code":"dataartsstudio", + "title":"Link to DMS Kafka", + "uri":"dataartsstudio_02_0280.html", + "doc_type":"api", + "p_code":"43", + "code":"57" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Source Job Parameters", + "uri":"dataartsstudio_02_0281.html", + "doc_type":"api", + "p_code":"42", + "code":"58" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"From a Relational Database", + "uri":"dataartsstudio_02_0282.html", + "doc_type":"api", + "p_code":"58", + "code":"59" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"From Object Storage", + "uri":"dataartsstudio_02_0283.html", + "doc_type":"api", + "p_code":"58", + "code":"60" + }, + { + "desc":"HDFS job parameter descriptionParameterMandatoryTypeDescriptionfromJobConfig.inputDirectoryYesStringPath for storing data to be extracted. For example, /data_dir.fromJobC", + "product_code":"dataartsstudio", + "title":"From HDFS", + "uri":"dataartsstudio_02_0284.html", + "doc_type":"api", + "p_code":"58", + "code":"61" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"From Hive", + "uri":"dataartsstudio_02_0285.html", + "doc_type":"api", + "p_code":"58", + "code":"62" + }, + { + "desc":"HBase/CloudTable job parameter descriptionParameterMandatoryTypeDescriptionfromJobConfig.tableYesStringName of the table from which data is extracted. For example, cdm.fr", + "product_code":"dataartsstudio", + "title":"From HBase/CloudTable", + "uri":"dataartsstudio_02_0286.html", + "doc_type":"api", + "p_code":"58", + "code":"63" + }, + { + "desc":"Source link job parameters of FTP and SFTP are the same. Table 1 describes the parameters.Source link job parameters of file systemsParameterMandatoryTypeDescriptionfromJ", + "product_code":"dataartsstudio", + "title":"From FTP/SFTP/NAS (to Be Brought Offline)/SFS (to Be Brought Offline)", + "uri":"dataartsstudio_02_0287.html", + "doc_type":"api", + "p_code":"58", + "code":"64" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"From HTTP/HTTPS", + "uri":"dataartsstudio_02_0288.html", + "doc_type":"api", + "p_code":"58", + "code":"65" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"From MongoDB/DDS", + "uri":"dataartsstudio_02_0289.html", + "doc_type":"api", + "p_code":"58", + "code":"66" + }, + { + "desc":"Redis job parameter descriptionParameterMandatoryTypeDescriptionfromJobConfig.isBatchMigrationNoBooleanWhether to migrate all data in the databasefromJobConfig.keyPrefixY", + "product_code":"dataartsstudio", + "title":"From Redis/DCS (to Be Brought Offline)", + "uri":"dataartsstudio_02_0290.html", + "doc_type":"api", + "p_code":"58", + "code":"67" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"From DIS", + "uri":"dataartsstudio_02_0291.html", + "doc_type":"api", + "p_code":"58", + "code":"68" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"From Kafka", + "uri":"dataartsstudio_02_0292.html", + "doc_type":"api", + "p_code":"58", + "code":"69" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"From Elasticsearch/Cloud Search Service", + "uri":"dataartsstudio_02_0293.html", + "doc_type":"api", + "p_code":"58", + "code":"70" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"From OpenTSDB", + "uri":"dataartsstudio_02_0294.html", + "doc_type":"api", + "p_code":"58", + "code":"71" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Destination Job Parameters", + "uri":"dataartsstudio_02_0295.html", + "doc_type":"api", + "p_code":"42", + "code":"72" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"To a Relational Database", + "uri":"dataartsstudio_02_0296.html", + "doc_type":"api", + "p_code":"72", + "code":"73" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"To OBS", + "uri":"dataartsstudio_02_0297.html", + "doc_type":"api", + "p_code":"72", + "code":"74" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"To HDFS", + "uri":"dataartsstudio_02_0298.html", + "doc_type":"api", + "p_code":"72", + "code":"75" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"To Hive", + "uri":"dataartsstudio_02_0299.html", + "doc_type":"api", + "p_code":"72", + "code":"76" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"To HBase/CloudTable", + "uri":"dataartsstudio_02_0300.html", + "doc_type":"api", + "p_code":"72", + "code":"77" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"To FTP/SFTP/NAS (to Be Brought Offline)/SFS (to Be Brought Offline)", + "uri":"dataartsstudio_02_0301.html", + "doc_type":"api", + "p_code":"72", + "code":"78" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"To DDS", + "uri":"dataartsstudio_02_0302.html", + "doc_type":"api", + "p_code":"72", + "code":"79" + }, + { + "desc":"Parameter descriptionParameterMandatoryTypeDescriptiontoJobConfig.isBatchMigrationNoBooleanWhether to migrate all data in the databasetoJobConfig.shouldClearDatabaseNoBoo", + "product_code":"dataartsstudio", + "title":"To DCS", + "uri":"dataartsstudio_02_0303.html", + "doc_type":"api", + "p_code":"72", + "code":"80" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"To Elasticsearch/Cloud Search Service", + "uri":"dataartsstudio_02_0304.html", + "doc_type":"api", + "p_code":"72", + "code":"81" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"To DLI", + "uri":"dataartsstudio_02_0305.html", + "doc_type":"api", + "p_code":"72", + "code":"82" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"To DIS", + "uri":"dataartsstudio_02_0306.html", + "doc_type":"api", + "p_code":"72", + "code":"83" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"To OpenTSDB", + "uri":"dataartsstudio_02_0307.html", + "doc_type":"api", + "p_code":"72", + "code":"84" + }, + { + "desc":"When Creating a Job in a Specified Cluster or Creating and Executing a Job in a Random Cluster, the driver-config-values parameter specifies the job configuration, which ", + "product_code":"dataartsstudio", + "title":"Job Parameter Description", + "uri":"dataartsstudio_02_0308.html", + "doc_type":"api", + "p_code":"42", + "code":"85" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"DataArts Factory APIs", + "uri":"dataartsstudio_02_0127.html", + "doc_type":"api", + "p_code":"", + "code":"86" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Connection Management APIs", + "uri":"dataartsstudio_02_0049.html", + "doc_type":"api", + "p_code":"86", + "code":"87" + }, + { + "desc":"This API is used to create a connection. The supported connection types include DWS, DLI, Spark SQL, RDS, CloudTable, and Hive.URI formatPOST /v1/{project_id}/connections", + "product_code":"dataartsstudio", + "title":"Creating a Connection", + "uri":"dataartsstudio_02_0050.html", + "doc_type":"api", + "p_code":"87", + "code":"88" + }, + { + "desc":"This API is used to query a connection list.URI formatGET /v1/{project_id}/connections?offset={offset}&limit={limit}&connectionName={connectionName}GET /v1/{project_id}/c", + "product_code":"dataartsstudio", + "title":"Querying a Connection List", + "uri":"dataartsstudio_02_0051.html", + "doc_type":"api", + "p_code":"87", + "code":"89" + }, + { + "desc":"This API is used to query configuration details of a specific connection.URI formatGET /v1/{project_id}/connections/{connection_name}GET /v1/{project_id}/connections/{con", + "product_code":"dataartsstudio", + "title":"Viewing Connection Details", + "uri":"dataartsstudio_02_0052.html", + "doc_type":"api", + "p_code":"87", + "code":"90" + }, + { + "desc":"This API is used to edit a connection.URI formatPUT /v1/{project_id}/connections/{connection_name}?ischeck=truePUT /v1/{project_id}/connections/{connection_name}?ischeck=", + "product_code":"dataartsstudio", + "title":"Editing a Connection", + "uri":"dataartsstudio_02_0053.html", + "doc_type":"api", + "p_code":"87", + "code":"91" + }, + { + "desc":"This API is used to delete a connection.URI formatDELETE /v1/{project_id}/connections/{connection_name}DELETE /v1/{project_id}/connections/{connection_name}Parameter desc", + "product_code":"dataartsstudio", + "title":"Deleting a Connection", + "uri":"dataartsstudio_02_0054.html", + "doc_type":"api", + "p_code":"87", + "code":"92" + }, + { + "desc":"This API is used to export all connection information that is compressed in ZIP format.URI formatPOST /v1/{project_id}/connections/exportPOST /v1/{project_id}/connections", + "product_code":"dataartsstudio", + "title":"Exporting a Connection", + "uri":"dataartsstudio_02_0055.html", + "doc_type":"api", + "p_code":"87", + "code":"93" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Script Development APIs", + "uri":"dataartsstudio_02_0056.html", + "doc_type":"api", + "p_code":"86", + "code":"94" + }, + { + "desc":"This API is used to delete a specific script.URI formatDELETE /v1/{project_id}/scripts/{script_name}DELETE /v1/{project_id}/scripts/{script_name}Parameter descriptionURI ", + "product_code":"dataartsstudio", + "title":"Deleting a Script", + "uri":"dataartsstudio_02_0057.html", + "doc_type":"api", + "p_code":"94", + "code":"95" + }, + { + "desc":"This API is used to execute a specific script, which can be a DWS SQL, DLI SQL, RDS SQL, Flink SQL, Hive SQL, Presto SQL, or Spark SQL script. A script instance is genera", + "product_code":"dataartsstudio", + "title":"Executing a Script", + "uri":"dataartsstudio_02_0058.html", + "doc_type":"api", + "p_code":"94", + "code":"96" + }, + { + "desc":"This API is used to stop executing a script instance.URI formatPOST /v1/{project_id}/scripts/{script_name}/instances/{instance_id}/stopPOST /v1/{project_id}/scripts/{scri", + "product_code":"dataartsstudio", + "title":"Stopping Executing a Script Instance", + "uri":"dataartsstudio_02_0059.html", + "doc_type":"api", + "p_code":"94", + "code":"97" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Resource Management APIs", + "uri":"dataartsstudio_02_0060.html", + "doc_type":"api", + "p_code":"86", + "code":"98" + }, + { + "desc":"This API is used to delete a resource.URI formatDELETE /v1/{project_id}/resources/{resource_id}DELETE /v1/{project_id}/resources/{resource_id}Parameter descriptionURI par", + "product_code":"dataartsstudio", + "title":"Deleting a Resource", + "uri":"dataartsstudio_02_0061.html", + "doc_type":"api", + "p_code":"98", + "code":"99" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Job Development APIs", + "uri":"dataartsstudio_02_0062.html", + "doc_type":"api", + "p_code":"86", + "code":"100" + }, + { + "desc":"This API is used to check whether there are jobs and scripts in the job file to be imported from OBS to DLF.URI formatPOST /v1/{project_id}/jobs/check-filePOST /v1/{proje", + "product_code":"dataartsstudio", + "title":"Viewing a Job File", + "uri":"dataartsstudio_02_0063.html", + "doc_type":"api", + "p_code":"100", + "code":"101" + }, + { + "desc":"This API is used to stop a job.URI formatPOST /v1/{project_id}/jobs/{job_name}/stopPOST /v1/{project_id}/jobs/{job_name}/stopParameter descriptionURI parametersParamete", + "product_code":"dataartsstudio", + "title":"Stopping a Job", + "uri":"dataartsstudio_02_0064.html", + "doc_type":"api", + "p_code":"100", + "code":"102" + }, + { + "desc":"This API is used to delete a job.URI formatDELETE /v1/{project_id}/jobs/{job_name}DELETE /v1/{project_id}/jobs/{job_name}Parameter descriptionURI parametersParameterManda", + "product_code":"dataartsstudio", + "title":"Deleting a Job", + "uri":"dataartsstudio_02_0065.html", + "doc_type":"api", + "p_code":"100", + "code":"103" + }, + { + "desc":"This API is used to stop a specific job instance. A job instance can be stopped only when it is in the running state.URI formatPOST /v1/{project_id}/jobs/{job_name}/insta", + "product_code":"dataartsstudio", + "title":"Stopping a Job Instance", + "uri":"dataartsstudio_02_0066.html", + "doc_type":"api", + "p_code":"100", + "code":"104" + }, + { + "desc":"This API is used to restart a specific job instance. A job instance can be restarted only when it is in the successful, failed, or canceled state.URI formatPOST /v1/{proj", + "product_code":"dataartsstudio", + "title":"Restarting a Job Instance", + "uri":"dataartsstudio_02_0067.html", + "doc_type":"api", + "p_code":"100", + "code":"105" + }, + { + "desc":"Table 1 describes common request headers.Table 2 describes common response headers.", + "product_code":"dataartsstudio", + "title":"Data Structure", + "uri":"dataartsstudio_02_0082.html", + "doc_type":"api", + "p_code":"86", + "code":"106" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"APIs to Be Taken Offline", + "uri":"dataartsstudio_02_0083.html", + "doc_type":"api", + "p_code":"86", + "code":"107" + }, + { + "desc":"This API is used to create a job. A job consists of one or more nodes, such as Hive SQL and CDM Job nodes. DLF supports two types of jobs: batch jobs and real-time jobs.U", + "product_code":"dataartsstudio", + "title":"Creating a Job", + "uri":"dataartsstudio_02_0084.html", + "doc_type":"api", + "p_code":"107", + "code":"108" + }, + { + "desc":"This API is used to edit a job.URI formatPUT /v1/{project_id}/jobs/{job_name}PUT /v1/{project_id}/jobs/{job_name}Parameter descriptionURI parametersParameterMandatoryType", + "product_code":"dataartsstudio", + "title":"Editing a Job", + "uri":"dataartsstudio_02_0085.html", + "doc_type":"api", + "p_code":"107", + "code":"109" + }, + { + "desc":"This API is used to query a list of batch or real-time jobs. A maximum of 1000 jobs can be returned for each query.URI formatGET /v1/{project_id}/jobs?jobType={jobType}&o", + "product_code":"dataartsstudio", + "title":"Viewing a Job List", + "uri":"dataartsstudio_02_0086.html", + "doc_type":"api", + "p_code":"107", + "code":"110" + }, + { + "desc":"This API is used to view job details.URI formatGET /v1/{project_id}/jobs/{name}GET /v1/{project_id}/jobs/{name}Parameter descriptionURI parameterParameterMandatoryTypeDes", + "product_code":"dataartsstudio", + "title":"Viewing Job Details", + "uri":"dataartsstudio_02_0087.html", + "doc_type":"api", + "p_code":"107", + "code":"111" + }, + { + "desc":"This API is used to export a job, including job definitions, job dependency scripts, and CDM job definitions.URI formatPOST /v1/{project_id}/jobs/{name}/exportPOST /v1/{p", + "product_code":"dataartsstudio", + "title":"Exporting a Job", + "uri":"dataartsstudio_02_0088.html", + "doc_type":"api", + "p_code":"107", + "code":"112" + }, + { + "desc":"This API is used to batch export jobs, including job dependency scripts and CDM job definitions.URI formatPOST /v1/{project_id}/jobs/batch-exportPOST /v1/{project_id}/job", + "product_code":"dataartsstudio", + "title":"Batch Exporting Jobs", + "uri":"dataartsstudio_02_0089.html", + "doc_type":"api", + "p_code":"107", + "code":"113" + }, + { + "desc":"This API is used to import one or more job files from OBS to DLF.Before using this API, store job files in OBS buckets.URI formatPOST /v1/{project_id}/jobs/importPOST /", + "product_code":"dataartsstudio", + "title":"Importing a Job", + "uri":"dataartsstudio_02_0090.html", + "doc_type":"api", + "p_code":"107", + "code":"114" + }, + { + "desc":"This API is used to execute a job immediately and check whether the job can be executed successfully.URI formatPOST /v1/{project_id}/jobs/{job_name}/run-immediatePOST /", + "product_code":"dataartsstudio", + "title":"Executing a Job Immediately", + "uri":"dataartsstudio_02_0091.html", + "doc_type":"api", + "p_code":"107", + "code":"115" + }, + { + "desc":"This API is used to start a job.URI formatPOST /v1/{project_id}/jobs/{name}/startPOST /v1/{project_id}/jobs/{name}/startParameter descriptionURI parametersParameterMand", + "product_code":"dataartsstudio", + "title":"Starting a Job", + "uri":"dataartsstudio_02_0092.html", + "doc_type":"api", + "p_code":"107", + "code":"116" + }, + { + "desc":"This API is used to view running status of a real-time job.URI formatGET /v1/{project_id}/jobs/{job_name}/statusGET /v1/{project_id}/jobs/{job_name}/statusParameter descr", + "product_code":"dataartsstudio", + "title":"Viewing Running Status of a Real-Time Job", + "uri":"dataartsstudio_02_0093.html", + "doc_type":"api", + "p_code":"107", + "code":"117" + }, + { + "desc":"This API is used to view a job instance list.A job instance is generated each time you run a batch job for which periodic scheduling or event-based scheduling is configur", + "product_code":"dataartsstudio", + "title":"Viewing a Job Instance List", + "uri":"dataartsstudio_02_0094.html", + "doc_type":"api", + "p_code":"107", + "code":"118" + }, + { + "desc":"This API is used to view job instance details, including the execution information about each node in a job instance.URI formatGET /v1/{project_id}/jobs/{job_name}/instan", + "product_code":"dataartsstudio", + "title":"Viewing Job Instance Details", + "uri":"dataartsstudio_02_0095.html", + "doc_type":"api", + "p_code":"107", + "code":"119" + }, + { + "desc":"This API is used to query details about asynchronous tasks.URI formatGET /v1/{project_id}/system-tasks/{task_id}GET /v1/{project_id}/system-tasks/{task_id}Parameter descr", + "product_code":"dataartsstudio", + "title":"Querying a System Task", + "uri":"dataartsstudio_02_0096.html", + "doc_type":"api", + "p_code":"107", + "code":"120" + }, + { + "desc":"This API is used to create a script. Currently, the following script types are supported: DLI SQL, Flink SQL, RDS SQL, Spark SQL, Hive SQL, DWS SQL, Shell, and Presto.URI", + "product_code":"dataartsstudio", + "title":"Creating a Script", + "uri":"dataartsstudio_02_0097.html", + "doc_type":"api", + "p_code":"107", + "code":"121" + }, + { + "desc":"This API is used to modify the configuration items or script contents of a script.When modifying a script, specify the name of the script to be modified.The script name a", + "product_code":"dataartsstudio", + "title":"Modifying a Script", + "uri":"dataartsstudio_02_0098.html", + "doc_type":"api", + "p_code":"107", + "code":"122" + }, + { + "desc":"This API is used to query a script, including the script type and script content.URI formatGET /v1/{project_id}/script/{script_name}GET /v1/{project_id}/script/{script_na", + "product_code":"dataartsstudio", + "title":"Querying a Script", + "uri":"dataartsstudio_02_0099.html", + "doc_type":"api", + "p_code":"107", + "code":"123" + }, + { + "desc":"This API is used to query the script list. A maximum of 1000 scripts can be returned for each query.URI formatGET /v1/{project_id}/scripts?offset={offset}&limit={limit}&s", + "product_code":"dataartsstudio", + "title":"Querying a Script List", + "uri":"dataartsstudio_02_0100.html", + "doc_type":"api", + "p_code":"107", + "code":"124" + }, + { + "desc":"This API is used to obtain the execution status and result of a script instance.During the query, specify the script name and script instance ID.URI formatGET /v1/{projec", + "product_code":"dataartsstudio", + "title":"Querying the Execution Result of a Script Instance", + "uri":"dataartsstudio_02_0101.html", + "doc_type":"api", + "p_code":"107", + "code":"125" + }, + { + "desc":"This API is used to create a resource. Types of nodes, including DLI Spark, MRS Spark, and MRS MapReduce, can reference files such as JAR and properties through resources", + "product_code":"dataartsstudio", + "title":"Creating a Resource", + "uri":"dataartsstudio_02_0102.html", + "doc_type":"api", + "p_code":"107", + "code":"126" + }, + { + "desc":"This API is used to modify a specific resource. When modifying the resource, specify the resource ID.The resource type and directory cannot be modified.URI formatPUT /v1/", + "product_code":"dataartsstudio", + "title":"Modifying a Resource", + "uri":"dataartsstudio_02_0103.html", + "doc_type":"api", + "p_code":"107", + "code":"127" + }, + { + "desc":"This API is used to query resource details. A resource contains various files such as JAR, ZIP, and properties files. A created resource can be used in job nodes such as ", + "product_code":"dataartsstudio", + "title":"Querying a Resource", + "uri":"dataartsstudio_02_0104.html", + "doc_type":"api", + "p_code":"107", + "code":"128" + }, + { + "desc":"This API is used to query a resource list. During the query, you can specify the page number and the maximum number of records on each page.URI formatGET /v1/{project_id}", + "product_code":"dataartsstudio", + "title":"Querying a Resource List", + "uri":"dataartsstudio_02_0105.html", + "doc_type":"api", + "p_code":"107", + "code":"129" + }, + { + "desc":"This API is used to import one or more connection files from OBS to the Data Development module. Before using this API, store connection files in OBS buckets.URI formatPO", + "product_code":"dataartsstudio", + "title":"Importing a Connection", + "uri":"dataartsstudio_02_0106.html", + "doc_type":"api", + "p_code":"107", + "code":"130" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Appendix", + "uri":"dataartsstudio_02_0309.html", + "doc_type":"api", + "p_code":"", + "code":"131" + }, + { + "desc":"Table 1 describes common request headers.Table 2 describes common response headers.", + "product_code":"dataartsstudio", + "title":"Common Message Headers", + "uri":"dataartsstudio_02_0318.html", + "doc_type":"api", + "p_code":"131", + "code":"132" + }, + { + "desc":"A status code consists of three digits. The first digit defines the class of a response. There are five values for the first digit:1xx: indication information, indicating", + "product_code":"dataartsstudio", + "title":"Status Codes", + "uri":"dataartsstudio_02_0310.html", + "doc_type":"api", + "p_code":"131", + "code":"133" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Error Codes", + "uri":"ErrorCode.html", + "doc_type":"api", + "p_code":"131", + "code":"134" + }, + { + "desc":"If an error occurs in API calling, no result is returned. Identify the error cause based on the error codes of each API. If an error occurs in API calling, HTTP status co", + "product_code":"dataartsstudio", + "title":"CDM Error Codes", + "uri":"dataartsstudio_02_0311.html", + "doc_type":"api", + "p_code":"134", + "code":"135" + }, + { + "desc":"The error response is in the following format:{\"error_code\":\"DLF.0100\",\"error_msg\":\"The job not found\"}Table 1 describes the error codes.", + "product_code":"dataartsstudio", + "title":"DLF Error Codes", + "uri":"dataartsstudio_02_0313.html", + "doc_type":"api", + "p_code":"134", + "code":"136" + }, + { + "desc":"The response messages of the job export API and connection export API are streams that need to be converted to files. For details, see the following sample code:", + "product_code":"dataartsstudio", + "title":"Parsing a Stream in a Response Message", + "uri":"dataartsstudio_02_0317.html", + "doc_type":"api", + "p_code":"131", + "code":"137" + }, + { + "desc":"HUAWEI CLOUD Help Center presents technical documents to help you quickly get started with HUAWEI CLOUD services. The technical documents include Service Overview, Price Details, Purchase Guide, User Guide, API Reference, Best Practices, FAQs, and Videos.", + "product_code":"dataartsstudio", + "title":"Change History", + "uri":"dataartsstudio_02_0330.html", + "doc_type":"api", + "p_code":"", + "code":"138" + } +] \ No newline at end of file diff --git a/docs/dataartsstudio/api-ref/CreateAndStartRandomClusterJob.html b/docs/dataartsstudio/api-ref/CreateAndStartRandomClusterJob.html new file mode 100644 index 000000000..9115eb749 --- /dev/null +++ b/docs/dataartsstudio/api-ref/CreateAndStartRandomClusterJob.html @@ -0,0 +1,882 @@ + + +

Creating and Executing a Job in a Random Cluster

+

Function

This API is used to create and execute a job in a random cluster.

+
+

URI

POST /v1.1/{project_id}/clusters/job

+ +
+ + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+

X-Language

+

Yes

+

String

+

Request language

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 Request body parameters

Parameter

+

Mandatory

+

Type

+

Description

+

jobs

+

Yes

+

Array of Job objects

+

Job list. For details, see the descriptions of jobs parameters.

+

clusters

+

Yes

+

Array of strings

+

IDs of CDM clusters. The system selects a random cluster in running state from the specified clusters and creates and executes a migration job in the cluster.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Job

Parameter

+

Mandatory

+

Type

+

Description

+

job_type

+

No

+

String

+

Job type

+
  • NORMAL_JOB: table/file migration

    +
  • BATCH_JOB: entire DB migration

    +
  • SCENARIO_JOB: scenario migration

    +
+

Enumeration values:

+
  • NORMAL_JOB

    +
  • BATCH_JOB

    +
  • SCENARIO_JOB

    +
+

from-connector-name

+

Yes

+

String

+

Source link type

+

to-config-values

+

Yes

+

ConfigValues object

+

Destination link parameter configuration

+

to-link-name

+

Yes

+

String

+

Destination link name

+

driver-config-values

+

Yes

+

ConfigValues object

+

Job parameter configuration

+

from-config-values

+

Yes

+

ConfigValues object

+

Source link parameter configuration

+

to-connector-name

+

No

+

String

+

Destination link type

+

name

+

No

+

String

+

Job name, which contains 1 to 240 characters

+

Minimum: 1

+

Maximum: 240

+

from-link-name

+

No

+

String

+

Source link name

+

creation-user

+

No

+

String

+

User who created the job

+

creation-date

+

No

+

Long

+

Time when the job was created, accurate to millisecond

+

update-date

+

No

+

Long

+

Time when the job was last updated, accurate to millisecond

+

is_incre_job

+

No

+

Boolean

+

Incremental or not

+

flag

+

No

+

Integer

+

Flag

+

files_read

+

No

+

Integer

+

Number of read files

+

update-user

+

No

+

String

+

User who last updated the job

+

external_id

+

No

+

String

+

External ID

+

type

+

No

+

String

+

Task type

+

execute_start_date

+

No

+

Long

+

Execution start date

+

delete_rows

+

No

+

Integer

+

Number of deleted rows

+

enabled

+

No

+

Boolean

+

Whether to activate the link

+

bytes_written

+

No

+

Long

+

Number of written bytes

+

id

+

No

+

Integer

+

Job ID

+

is_use_sql

+

No

+

Boolean

+

Whether to use SQL statements

+

update_rows

+

No

+

Integer

+

Number of updated rows

+

group_name

+

No

+

String

+

Group name

+

bytes_read

+

No

+

Long

+

Number of read bytes

+

execute_update_date

+

No

+

Long

+

Execution update date

+

write_rows

+

No

+

Integer

+

Number of written rows

+

rows_written

+

No

+

Integer

+

Number of written rows

+

rows_read

+

No

+

Long

+

Number of rows that are read

+

files_written

+

No

+

Integer

+

Number of written files

+

is_incrementing

+

No

+

Boolean

+

Incremental or not

+

execute_create_date

+

No

+

Long

+

Execution creation date

+

status

+

No

+

String

+

Job execution status

+
  • BOOTING: The job is starting.

    +
  • RUNNING: The job is running.

    +
  • SUCCEEDED: The job was successfully executed.

    +
  • FAILED: The job execution failed.

    +
  • NEW: The job was not executed.

    +
+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 5 ConfigValues

Parameter

+

Mandatory

+

Type

+

Description

+

configs

+

Yes

+

Array of configs objects

+

The data structures of source link parameters, destination link parameters, and job parameters are the same. However, the inputs parameter varies. For details, see the descriptions of configs parameters.

+

extended-configs

+

No

+

extended-configs object

+

Extended configuration. For details, see the descriptions of extended-configs parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 configs

Parameter

+

Mandatory

+

Type

+

Description

+

inputs

+

Yes

+

Array of Input objects

+

Input parameter list. Each element in the list is in name,value format. For details, see the descriptions of inputs parameters. In the from-config-values data structure, the value of this parameter varies with the source link type. For details, see section "Source Job Parameters" in the Cloud Data Migration User Guide. In the to-cofig-values data structure, the value of this parameter varies with the destination link type. For details, see section "Destination Job Parameters" in the Cloud Data Migration User Guide. For details about the inputs parameter in the driver-config-values data structure, see the job parameter descriptions.

+

name

+

Yes

+

String

+

Configuration name. The value is fromJobConfig for a source job, toJobConfig for a destination job, and linkConfig for a link.

+

id

+

No

+

Integer

+

Configuration ID

+

type

+

No

+

String

+

Configuration type

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 7 Input

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Parameter name

+

value

+

Yes

+

String

+

Parameter value

+

type

+

No

+

String

+

Value type

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 8 extended-configs

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

No

+

String

+

Name

+

value

+

No

+

String

+

Value

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 9 Response body parameters

Parameter

+

Type

+

Description

+

submissions

+

Array of StartJobSubmission objects

+

Job running information. For details, see the descriptions of submission parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 10 StartJobSubmission

Parameter

+

Type

+

Description

+

isIncrementing

+

Boolean

+

Whether the job migrates incremental data

+

delete_rows

+

Integer

+

Number of deleted rows

+

update_rows

+

Integer

+

Number of updated rows

+

write_rows

+

Integer

+

Number of written rows

+

submission-id

+

Integer

+

ID of the submitted job

+

job-name

+

String

+

Job name

+

creation-user

+

String

+

User who created the job

+

creation-date

+

Long

+

Job creation time, accurate to millisecond

+

execute-date

+

Long

+

Job execution time

+

progress

+

Float

+

Job progress. If a job fails, the value is -1. Otherwise, the value ranges from 0 to 100.

+

status

+

String

+

Job status

+
  • BOOTING: The job is starting.

    +
  • FAILURE_ON_SUBMIT: The job failed to be submitted.

    +
  • RUNNING: The job is running.

    +
  • SUCCEEDED: The job was successfully executed.

    +
  • FAILED: The job execution failed.

    +
  • UNKNOWN: The job status is unknown.

    +
  • NEVER_EXECUTED: The job was not executed.

    +
+

isStopingIncrement

+

String

+

Whether to stop incremental data migration

+

is-execute-auto

+

Boolean

+

Whether to execute the job as scheduled

+

last-update-date

+

Long

+

Time when the job was last updated

+

last-udpate-user

+

String

+

User who last updated the job status

+

isDeleteJob

+

Boolean

+

Whether to delete the job after it is executed

+
+
+
+

Example Requests

POST /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/job
+
+{
+  "jobs" : [ {
+    "job_type" : "NORMAL_JOB",
+    "from-connector-name" : "elasticsearch-connector",
+    "to-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "toJobConfig.streamName",
+          "value" : "dis-lkGm"
+        }, {
+          "name" : "toJobConfig.separator",
+          "value" : "|"
+        }, {
+          "name" : "toJobConfig.columnList",
+          "value" : "1&2&3"
+        } ],
+        "name" : "toJobConfig"
+      } ]
+    },
+    "to-link-name" : "dis",
+    "driver-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "throttlingConfig.numExtractors",
+          "value" : "1"
+        }, {
+          "name" : "throttlingConfig.submitToCluster",
+          "value" : "false"
+        }, {
+          "name" : "throttlingConfig.numLoaders",
+          "value" : "1"
+        }, {
+          "name" : "throttlingConfig.recordDirtyData",
+          "value" : "false"
+        } ],
+        "name" : "throttlingConfig"
+      }, {
+        "inputs" : { },
+        "name" : "jarConfig"
+      }, {
+        "inputs" : [ {
+          "name" : "schedulerConfig.isSchedulerJob",
+          "value" : "false"
+        }, {
+          "name" : "schedulerConfig.disposableType",
+          "value" : "NONE"
+        } ],
+        "name" : "schedulerConfig"
+      }, {
+        "inputs" : { },
+        "name" : "transformConfig"
+      }, {
+        "inputs" : [ {
+          "name" : "retryJobConfig.retryJobType",
+          "value" : "NONE"
+        } ],
+        "name" : "retryJobConfig"
+      } ]
+    },
+    "from-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "fromJobConfig.index",
+          "value" : "52est"
+        }, {
+          "name" : "fromJobConfig.type",
+          "value" : "est_array"
+        }, {
+          "name" : "fromJobConfig.columnList",
+          "value" : "array_f1_int:long&array_f2_text:string&array_f3_object:nested"
+        }, {
+          "name" : "fromJobConfig.splitNestedField",
+          "value" : "false"
+        } ],
+        "name" : "fromJobConfig"
+      } ]
+    },
+    "to-connector-name" : "dis-connector",
+    "name" : "es_css",
+    "from-link-name" : "css"
+  } ],
+  "clusters" : [ "b0791496-e111-4e75-b7ca-9277aeab9297", "c2db1191-eb6c-464a-a0d3-b434e6c6df26", "c2db1191-eb6c-464a-a0d3-b434e6c6df26" ]
+}
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "submissions" : [ {
+    "isIncrementing" : false,
+    "job-name" : "obs2obs-03",
+    "submisson-id" : 13,
+    "isStopingIncrement" : "",
+    "last-update-date" : 1635909057030,
+    "is-execute-auto" : false,
+    "delete_rows" : 0,
+    "write_rows" : 0,
+    "last-update-user" : "mwx5316849",
+    "isDeleteJob" : false,
+    "creation-user" : "mwx5316849",
+    "progress" : 0,
+    "creation-date" : 1635909057030,
+    "update_rows" : 0,
+    "status" : "PENDING"
+  } ]
+}
+
+

Status Codes

+
+ + + + + + + +

Status Code

+

Description

+

200

+

ok

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/CreateCluster.html b/docs/dataartsstudio/api-ref/CreateCluster.html new file mode 100644 index 000000000..d7ef3b5c8 --- /dev/null +++ b/docs/dataartsstudio/api-ref/CreateCluster.html @@ -0,0 +1,655 @@ + + +

Creating a Cluster

+

Function

This API is used to create a cluster.

+
+

URI

POST /v1.1/{project_id}/clusters

+ +
+ + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+

X-Language

+

Yes

+

String

+

Request language

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Request body parameters

Parameter

+

Mandatory

+

Type

+

Description

+

cluster

+

Yes

+

cluster object

+

Cluster object. For details, see the descriptions of cluster parameters.

+

auto_remind

+

No

+

Boolean

+

Whether to enable message notification. If you enable this function, you can configure a maximum of five mobile numbers or email addresses. You will be notified of table/file migration job failures and EIP exceptions by SMS message or email.

+

phone_num

+

No

+

String

+

Mobile number for receiving notifications

+

email

+

No

+

String

+

Email address for receiving notifications

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 cluster

Parameter

+

Mandatory

+

Type

+

Description

+

scheduleBootTime

+

No

+

String

+

Time for scheduled startup of a CDM cluster. The CDM cluster starts at this time every day.

+

isScheduleBootOff

+

No

+

Boolean

+

Whether to enable scheduled startup/shutdown. The scheduled startup/shutdown and auto shutdown functions cannot be enabled at the same time.

+

instances

+

No

+

Array of instance objects

+

Node list. For details, see the descriptions of instances parameters.

+

datastore

+

No

+

Datastore object

+

Cluster information. For details, see the descriptions of datastore parameters.

+

extended_properties

+

No

+

ExtendedProperties object

+

Extended attribute. For details, see parameters in the extended_properties field.

+

scheduleOffTime

+

No

+

String

+

Time for scheduled shutdown of a CDM cluster. The CDM cluster shuts down directly at this time every day without waiting for unfinished jobs to complete.

+

vpcId

+

No

+

String

+

VPC ID, which is used for configuring a network for the cluster.

+

name

+

No

+

String

+

Cluster name

+

sys_tags

+

No

+

Array of sys_tags objects

+

Enterprise project information. For details, see the descriptions of sys_tags parameters.

+

isAutoOff

+

No

+

Boolean

+

Whether to enable auto shutdown. The auto shutdown and scheduled startup/shutdown functions cannot be enabled at the same time. When auto shutdown is enabled, if no job is running in the cluster and no scheduled job is available, a cluster will be automatically shut down 15 minutes after it starts running, which reduces costs for you.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 instance

Parameter

+

Mandatory

+

Type

+

Description

+

availability_zone

+

Yes

+

String

+

AZ where a cluster is located

+

nics

+

Yes

+

Array of nics objects

+

NIC list. A maximum of two NICs are supported. For details, see the descriptions of nics parameters.

+

flavorRef

+

Yes

+

String

+

Instance flavor

+
  • a79fd5ae-1833-448a-88e8-3ea2b913e1f6: cdm.small with 2 vCPUs and 4 GB memory applicable to Proof of Concept (PoC) verification and development and tests
  • fb8fe666-6734-4b11-bc6c-43d11db3c745: cdm.medium with 4 vCPUs and 8 GB memory applicable to the migration of a single database table with fewer than 10 million pieces of data
  • 5ddb1071-c5d7-40e0-a874-8a032e81a697: cdm.large with 8 vCPUs and 16 GB memory applicable to the migration of a single database table with 10 million or more pieces of data
  • 6ddb1072-c5d7-40e0-a874-8a032e81a698: cdm.xlarge with 16 vCPUs and 32 GB memory applicable to the migration of terabytes of data requiring 10GE bandwidth
+

type

+

Yes

+

String

+

Node type. Currently, only cdm is available.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 6 nics

Parameter

+

Mandatory

+

Type

+

Description

+

securityGroupId

+

Yes

+

String

+

Security group ID

+

net-id

+

Yes

+

String

+

Subnet ID

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 7 Datastore

Parameter

+

Mandatory

+

Type

+

Description

+

type

+

No

+

String

+

Type. Generally, the value is cdm.

+

version

+

No

+

String

+

Cluster version

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 8 ExtendedProperties

Parameter

+

Mandatory

+

Type

+

Description

+

workSpaceId

+

No

+

String

+

Workspace ID

+

resourceId

+

No

+

String

+

Resource ID

+

trial

+

No

+

String

+

Whether the cluster is a trial cluster

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 9 sys_tags

Parameter

+

Mandatory

+

Type

+

Description

+

value

+

Yes

+

String

+

Enterprise project ID

+

key

+

Yes

+

String

+

The value is fixed at _sys_enterprise_project_id.

+
+
+
+

Response Parameters

Status code: 202

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 10 Response body parameters

Parameter

+

Type

+

Description

+

name

+

String

+

Cluster name

+

id

+

String

+

Cluster ID

+

task

+

Task object

+

Task information

+

datastore

+

Datastore object

+

Cluster information

+

instances

+

Array of ClusterInstance objects

+

Cluster node information

+
+
+ +
+ + + + + + + + + + + + + +
Table 11 Task

Parameter

+

Type

+

Description

+

id

+

String

+

Task ID

+

name

+

String

+

Task name

+
+
+ +
+ + + + + + + + + + + + + +
Table 12 Datastore

Parameter

+

Type

+

Description

+

type

+

String

+

Type. Generally, the value is cdm.

+

version

+

String

+

Cluster version

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 13 ClusterInstance

Parameter

+

Type

+

Description

+

id

+

String

+

Node VM ID

+

name

+

String

+

Name of the VM on the node

+

type

+

String

+

Node type. Currently, only cdm is available.

+

shard_id

+

String

+

Shard ID

+
+
+
+

Example Requests

POST /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters
+
+{
+  "cluster" : {
+    "scheduleBootTime" : "",
+    "isScheduleBootOff" : false,
+    "instances" : [ {
+      "availability_zone" : "eu-de",
+      "nics" : [ {
+        "securityGroupId" : "c37852d2-2d12-41cb-af47-65c80e995c80",
+        "net-id" : "2d120298-6130-44d4-a438-454912fff901"
+      } ],
+      "flavorRef" : "5ddb1071-c5d7-40e0-a874-8a032e81a697",
+      "type" : "cdm"
+    } ],
+    "datastore" : {
+      "type" : "cdm",
+      "version" : "1.8.10"
+    },
+    "scheduleOffTime" : "",
+    "vpcId" : "67c06084-2212-4242-bcd4-d2144c2385a9",
+    "name" : "cdm-ab82",
+    "sys_tags" : [ {
+      "value" : "1ce45885-4033-40d2-bdde-d4dbaceb387d",
+      "key" : "_sys_enterprise_project_id"
+    } ],
+    "isAutoOff" : false
+  },
+  "auto_remind" : false,
+  "phone_num" : "",
+  "email" : ""
+}
+
+

Example Responses

Status code: 202

+

Accepted

+
{
+  "id" : "befc862c-9286-46a0-a1d6-300d98b63aad",
+  "name" : "cdm-4ef213",
+  "task" : {
+    "id" : "2c9080047f1b1185017f1ef6ad0500ac",
+    "name" : "rdsCreateBackupJob"
+  },
+  "datastore" : {
+    "type" : "cdm",
+    "version" : "2.9.1.100"
+  },
+  "instances" : [ {
+    "id" : "b2672e7d-2faf-423f-96bb-0664cd743cfd",
+    "name" : "cdm-4ef213-cdm-dn-1-1",
+    "type" : "cdm",
+    "shard_id" : "dn-1"
+  } ]
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

202

+

Accepted

+

400

+

Request error.

+

401

+

Authentication failed.

+

403

+

You do not have required permissions to perform this operation.

+

404

+

The requested resource was not found.

+

500

+

Internal service error.

+

503

+

Service unavailable.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/CreateJob.html b/docs/dataartsstudio/api-ref/CreateJob.html new file mode 100644 index 000000000..68297bb69 --- /dev/null +++ b/docs/dataartsstudio/api-ref/CreateJob.html @@ -0,0 +1,803 @@ + + +

Creating a Job in a Specified Cluster

+

Function

This API is used to create a job in a specified cluster.

+
+

URI

POST /v1.1/{project_id}/clusters/{cluster_id}/cdm/job

+ +
+ + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+ +
+ + + + + + + + + + + +
Table 3 Request body parameters

Parameter

+

Mandatory

+

Type

+

Description

+

jobs

+

Yes

+

Array of Job objects

+

Job list. For details, see the descriptions of jobs parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Job

Parameter

+

Mandatory

+

Type

+

Description

+

job_type

+

No

+

String

+

Job type

+
  • NORMAL_JOB: table/file migration
  • BATCH_JOB: entire DB migration
  • SCENARIO_JOB: scenario migration
+

Enumeration values:

+
  • NORMAL_JOB
  • BATCH_JOB
  • SCENARIO_JOB
+

from-connector-name

+

Yes

+

String

+

Source link type

+

to-config-values

+

Yes

+

ConfigValues object

+

Destination link parameter configuration

+

to-link-name

+

Yes

+

String

+

Destination link name

+

driver-config-values

+

Yes

+

ConfigValues object

+

Job parameter configuration

+

from-config-values

+

Yes

+

ConfigValues object

+

Source link parameter configuration

+

to-connector-name

+

No

+

String

+

Destination link type

+

name

+

No

+

String

+

Job name, which contains 1 to 240 characters

+

Minimum: 1

+

Maximum: 240

+

from-link-name

+

No

+

String

+

Source link name

+

creation-user

+

No

+

String

+

User who created the job

+

creation-date

+

No

+

Long

+

Time when the job was created, accurate to millisecond

+

update-date

+

No

+

Long

+

Time when the job was last updated, accurate to millisecond

+

is_incre_job

+

No

+

Boolean

+

Incremental or not

+

flag

+

No

+

Integer

+

Flag

+

files_read

+

No

+

Integer

+

Number of read files

+

update-user

+

No

+

String

+

User who last updated the job

+

external_id

+

No

+

String

+

External ID

+

type

+

No

+

String

+

Task type

+

execute_start_date

+

No

+

Long

+

Execution start date

+

delete_rows

+

No

+

Integer

+

Number of deleted rows

+

enabled

+

No

+

Boolean

+

Whether to activate the link

+

bytes_written

+

No

+

Long

+

Number of written bytes

+

id

+

No

+

Integer

+

Job ID

+

is_use_sql

+

No

+

Boolean

+

Whether to use SQL statements

+

update_rows

+

No

+

Integer

+

Number of updated rows

+

group_name

+

No

+

String

+

Group name

+

bytes_read

+

No

+

Long

+

Number of read bytes

+

execute_update_date

+

No

+

Long

+

Execution update date

+

write_rows

+

No

+

Integer

+

Number of written rows

+

rows_written

+

No

+

Integer

+

Number of written rows

+

rows_read

+

No

+

Long

+

Number of rows that are read

+

files_written

+

No

+

Integer

+

Number of written files

+

is_incrementing

+

No

+

Boolean

+

Incremental or not

+

execute_create_date

+

No

+

Long

+

Execution creation date

+

status

+

No

+

String

+

Job execution status

+
  • BOOTING: The job is starting.
  • RUNNING: The job is running.
  • SUCCEEDED: The job was successfully executed.
  • FAILED: The job execution failed.
  • NEW: The job was not executed.
+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 5 ConfigValues

Parameter

+

Mandatory

+

Type

+

Description

+

configs

+

Yes

+

Array of configs objects

+

The data structures of source link parameters, destination link parameters, and job parameters are the same. However, the inputs parameter varies. For details, see the descriptions of configs parameters.

+

extended-configs

+

No

+

extended-configs object

+

Extended configuration. For details, see the descriptions of extended-configs parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 configs

Parameter

+

Mandatory

+

Type

+

Description

+

inputs

+

Yes

+

Array of Input objects

+

Input parameter list. Each element in the list is in name,value format. For details, see the descriptions of inputs parameters. In the from-config-values data structure, the value of this parameter varies with the source link type. For details, see section "Source Job Parameters" in the Cloud Data Migration User Guide. In the to-cofig-values data structure, the value of this parameter varies with the destination link type. For details, see section "Destination Job Parameters" in the Cloud Data Migration User Guide. For details about the inputs parameter in the driver-config-values data structure, see the job parameter descriptions.

+

name

+

Yes

+

String

+

Configuration name. The value is fromJobConfig for a source job, toJobConfig for a destination job, and linkConfig for a link.

+

id

+

No

+

Integer

+

Configuration ID

+

type

+

No

+

String

+

Configuration type

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 7 Input

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Parameter name

+

value

+

Yes

+

String

+

Parameter value

+

type

+

No

+

String

+

Value type

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 8 extended-configs

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

No

+

String

+

Name

+

value

+

No

+

String

+

Value

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + +
Table 9 Response body parameters

Parameter

+

Type

+

Description

+

name

+

String

+

Job name

+

validation-result

+

Array of JobValidationResult objects

+

Check result

+
  • If the modification fails, the failure cause is returned.
  • If the modification is successful, an empty list is returned.
+
+
+ +
+ + + + + + + + + + + + + +
Table 10 JobValidationResult

Parameter

+

Type

+

Description

+

message

+

String

+

Error message

+

status

+

String

+

ERROR,WARNING

+

Enumeration values:

+
  • ERROR
  • WARNING
+
+
+

Status code: 400

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 11 Response body parameters

Parameter

+

Type

+

Description

+

code

+

String

+

Return code

+

errCode

+

String

+

Error code

+

message

+

String

+

Error message

+

externalMessage

+

String

+

Additional information

+
+
+
+

Example Requests

POST /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/job
+
+{
+  "jobs" : [ {
+    "job_type" : "NORMAL_JOB",
+    "from-connector-name" : "elasticsearch-connector",
+    "to-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "toJobConfig.streamName",
+          "value" : "dis-lkGm"
+        }, {
+          "name" : "toJobConfig.separator",
+          "value" : "|"
+        }, {
+          "name" : "toJobConfig.columnList",
+          "value" : "1&2&3"
+        } ],
+        "name" : "toJobConfig"
+      } ]
+    },
+    "to-link-name" : "dis",
+    "driver-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "throttlingConfig.numExtractors",
+          "value" : "1"
+        }, {
+          "name" : "throttlingConfig.submitToCluster",
+          "value" : "false"
+        }, {
+          "name" : "throttlingConfig.numLoaders",
+          "value" : "1"
+        }, {
+          "name" : "throttlingConfig.recordDirtyData",
+          "value" : "false"
+        } ],
+        "name" : "throttlingConfig"
+      }, {
+        "inputs" : { },
+        "name" : "jarConfig"
+      }, {
+        "inputs" : [ {
+          "name" : "schedulerConfig.isSchedulerJob",
+          "value" : "false"
+        }, {
+          "name" : "schedulerConfig.disposableType",
+          "value" : "NONE"
+        } ],
+        "name" : "schedulerConfig"
+      }, {
+        "inputs" : { },
+        "name" : "transformConfig"
+      }, {
+        "inputs" : [ {
+          "name" : "retryJobConfig.retryJobType",
+          "value" : "NONE"
+        } ],
+        "name" : "retryJobConfig"
+      } ]
+    },
+    "from-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "fromJobConfig.index",
+          "value" : "52est"
+        }, {
+          "name" : "fromJobConfig.type",
+          "value" : "est_array"
+        }, {
+          "name" : "fromJobConfig.columnList",
+          "value" : "array_f1_int:long&array_f2_text:string&array_f3_object:nested"
+        }, {
+          "name" : "fromJobConfig.splitNestedField",
+          "value" : "false"
+        } ],
+        "name" : "fromJobConfig"
+      } ]
+    },
+    "to-connector-name" : "dis-connector",
+    "name" : "es_css",
+    "from-link-name" : "css"
+  } ]
+}
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "name" : "mysql2hive"
+}
+

Status code: 400

+

Request error

+
{
+  "code" : "Cdm.0104",
+  "errCode" : "Cdm.0104",
+  "message" : "Job name already exist or created by other.",
+  "externalMessage" : "Job name already exist or created by other."
+}
+
+

Status Codes

+
+ + + + + + + + + + +

Status Code

+

Description

+

200

+

ok

+

400

+

Request error

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/CreateLink.html b/docs/dataartsstudio/api-ref/CreateLink.html new file mode 100644 index 000000000..efd7f3dd9 --- /dev/null +++ b/docs/dataartsstudio/api-ref/CreateLink.html @@ -0,0 +1,639 @@ + + +

Creating a Link

+

Function

This API is used to create a link.

+
+

URI

POST /v1.1/{project_id}/clusters/{cluster_id}/cdm/link

+ +
+ + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+
+
+ +
+ + + + + + + + + + + +
Table 2 Query Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

validate

+

No

+

String

+

When the parameter is set to true, the API only validates whether the parameters are correctly configured, but does not create any link.

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + +
+

Status code: 400

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+

Status code: 500

+ +
+ + + + + + + + + + + + + + +
+
+

Example Requests

POST /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/link
+
+{
+  "links" : [ {
+    "link-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "linkConfig.databaseType",
+          "value" : "MYSQL"
+        }, {
+          "name" : "linkConfig.host",
+          "value" : "100.94.8.163"
+        }, {
+          "name" : "linkConfig.port",
+          "value" : "3306"
+        }, {
+          "name" : "linkConfig.database",
+          "value" : "DB_name"
+        }, {
+          "name" : "linkConfig.username",
+          "value" : "username"
+        }, {
+          "name" : "linkConfig.password",
+          "value" : "DB_password"
+        }, {
+          "name" : "linkConfig.fetchSize",
+          "value" : "100000"
+        }, {
+          "name" : "linkConfig.usingNative",
+          "value" : false
+        } ],
+        "name" : "linkConfig"
+      } ]
+    },
+    "name" : "mysql_link",
+    "creation-date" : 1496654788622,
+    "connector-name" : "generic-jdbc-connector",
+    "update-date" : 1496654788622,
+    "enabled" : true
+  } ]
+}
+
+

Example Responses

Status code: 200

+

OK

+
{
+  "name" : "rdb_link",
+  "validation-result" : [ { } ]
+}
+

Status code: 400

+

Request error.

+
{
+  "code" : "Cdm.0315",
+  "errCode" : "Cdm.0315",
+  "message" : "Link name [ftp_link] already exist or created by other user.",
+  "externalMessage" : "Link name [ftp_link] already exist or created by other user."
+}
+

Status code: 500

+

An internal service error occurred. For details, see error codes.

+
{
+  "validation-result" : [ {
+    "linkConfig" : [ {
+      "message" : "Can't connect to the database with given credentials: The authentication type 12 is not supported. Check that you have configured the pg_hba.conf file to include the client's IP address or subnet, and that it is using an authentication scheme supported by the driver.",
+      "status" : "ERROR"
+    } ]
+  } ]
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/DeleteCluster.html b/docs/dataartsstudio/api-ref/DeleteCluster.html new file mode 100644 index 000000000..82be3d35b --- /dev/null +++ b/docs/dataartsstudio/api-ref/DeleteCluster.html @@ -0,0 +1,175 @@ + + +

Deleting a Cluster

+

Function

This API is used to delete a cluster.

+
+

URI

DELETE /v1.1/{project_id}/clusters/{cluster_id}

+ +
+ + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+ +
+ + + + + + + + + + + +
Table 3 Request body parameters

Parameter

+

Mandatory

+

Type

+

Description

+

keep_last_manual_backup

+

Yes

+

Integer

+

Number of backup log files. Retain the default value 0.

+

Default: 0

+
+
+
+

Response Parameters

Status code: 202

+ +
+ + + + + + + + + +
Table 4 Response body parameters

Parameter

+

Type

+

Description

+

jobId

+

String

+

Job ID

+
+
+
+

Example Requests

DELETE /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920
+
+{
+  "keep_last_manual_backup" : 0
+}
+
+

Example Responses

Status code: 202

+

Accepted

+
{
+  "jobId" : "ff8080815e55125a015e552eddba001a"
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

202

+

Accepted

+

400

+

Request error.

+

401

+

Authentication failed.

+

403

+

You do not have required permissions to perform this operation.

+

404

+

The requested resource was not found.

+

500

+

An internal service error occurred. For details, see error codes.

+

503

+

Service unavailable.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/DeleteJob.html b/docs/dataartsstudio/api-ref/DeleteJob.html new file mode 100644 index 000000000..875b7586c --- /dev/null +++ b/docs/dataartsstudio/api-ref/DeleteJob.html @@ -0,0 +1,159 @@ + + +

Deleting a Job

+

Function

This API is used to delete a job.

+
+

URI

DELETE /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+

job_name

+

Yes

+

String

+

Job name

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+
+

Response Parameters

Status code: 500

+ +
+ + + + + + + + + + + + + +
Table 3 Response body parameters

Parameter

+

Type

+

Description

+

errCode

+

String

+

Error code

+

externalMessage

+

String

+

Error message

+
+
+
+

Example Requests

DELETE /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/job/jdbc2hive
+
+

Example Responses

Status code: 500

+

An internal service error occurred. For details, see error codes.

+
{
+  "errCode" : "Cdm.0100",
+  "externalMessage" : "Job[jdbc2hive] doesn't exist."
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

OK

+

400

+

Request error.

+

401

+

Authentication failed.

+

403

+

You do not have required permissions to perform this operation.

+

404

+

The requested resource was not found.

+

500

+

An internal service error occurred. For details, see error codes.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/DeleteLink.html b/docs/dataartsstudio/api-ref/DeleteLink.html new file mode 100644 index 000000000..78421bcc3 --- /dev/null +++ b/docs/dataartsstudio/api-ref/DeleteLink.html @@ -0,0 +1,164 @@ + + +

Deleting a Link

+

Function

This API is used to delete a link.

+
+

URI

DELETE /v1.1/{project_id}/clusters/{cluster_id}/cdm/link/{link_name}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+

link_name

+

Yes

+

String

+

Name of the link to be deleted

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + +
+
+

Response Parameters

Status code: 500

+ +
+ + + + + + + + + + + + + + +
+
+

Example Requests

DELETE /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/link/jdbclink
+
+

Example Responses

Status code: 500

+

An internal service error occurred. For details, see error codes.

+
{
+  "errCode" : "Cdm.0021",
+  "externalMessage" : "Given link name is in use"
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/ErrorCode.html b/docs/dataartsstudio/api-ref/ErrorCode.html new file mode 100644 index 000000000..c063fbd1d --- /dev/null +++ b/docs/dataartsstudio/api-ref/ErrorCode.html @@ -0,0 +1,21 @@ + + + +

Error Codes

+ +

+
+ +
+ + + +
+ diff --git a/docs/dataartsstudio/api-ref/ListClusters.html b/docs/dataartsstudio/api-ref/ListClusters.html new file mode 100644 index 000000000..1320ba7ac --- /dev/null +++ b/docs/dataartsstudio/api-ref/ListClusters.html @@ -0,0 +1,856 @@ + + +

Querying the Cluster List

+

Function

This API is used to query the cluster list.

+
+

URI

GET /v1.1/{project_id}/clusters

+ +
+ + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 3 Response body parameters

Parameter

+

Type

+

Description

+

clusters

+

Array of clusters objects

+

Cluster list. For details, see the descriptions of clusters parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 clusters

Parameter

+

Type

+

Description

+

customerConfig

+

CustomerConfig object

+

User configuration

+

datastore

+

Datastore object

+

CDM information

+

instances

+

Array of ClusterDetailInstance objects

+

Cluster node information. For details, see the descriptions of instances parameters.

+

azName

+

String

+

AZ name

+

dbuser

+

String

+

Database user

+

flavorName

+

String

+

Flavor name

+

recentEvent

+

Integer

+

Number of events

+

isAutoOff

+

Boolean

+

Auto shutdown

+

isScheduleBootOff

+

Boolean

+

Whether to enable scheduled startup/shutdown. The scheduled startup/shutdown and auto shutdown functions cannot be enabled at the same time.

+

clusterMode

+

String

+

Cluster mode: sharding

+

namespace

+

String

+

Namespace

+

task

+

ClusterTask object

+

Task information

+

publicEndpoint

+

String

+

EIP bound to the cluster

+

actionProgress

+

ActionProgress object

+

Cluster operation progress, which consists of a key and a value. The key indicates an ongoing task, and the value indicates the progress of the ongoing task. An example is "action_progress":{"SNAPSHOTTING":"16%"}.

+

created

+

String

+

Cluster creation time in ISO 8601 format: YYYY-MM-DDThh:mm:ssZ

+

bakExpectedStartTime

+

String

+

Start time

+

bakKeepDay

+

Integer

+

Retention duration

+

name

+

String

+

Cluster name

+

statusDetail

+

String

+

Cluster status: normal

+

id

+

String

+

Cluster ID

+

isFrozen

+

String

+

Whether the cluster is frozen. The value can be 0 (not frozen) or 1 (frozen).

+

updated

+

String

+

Cluster update time in ISO 8601 format: YYYY-MM-DDThh:mm:ssZ

+

status

+

String

+

Cluster status

+
  • 100: creating

    +
  • 200: normal

    +
  • 300: failed

    +
  • 303: failed to be created

    +
  • 500: restarting

    +
  • 800: frozen

    +
  • 900: stopped

    +
  • 910: stopping

    +
  • 920: starting

    +
+

failedReasons

+

FailedReasons object

+

Failure cause. If this parameter is left empty, the cluster is in normal state.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 CustomerConfig

Parameter

+

Type

+

Description

+

failureRemind

+

String

+

Failure notification

+

clusterName

+

String

+

Cluster type

+

serviceProvider

+

String

+

Service provisioning

+

localDisk

+

String

+

Whether the disk is a local disk

+

ssl

+

String

+

Whether to enable SSL

+

createFrom

+

String

+

Source

+

resourceId

+

String

+

Resource ID

+

flavorType

+

String

+

Flavor type

+

workSpaceId

+

String

+

Workspace ID

+

trial

+

String

+

Trial

+
+
+ +
+ + + + + + + + + + + + + +
Table 6 Datastore

Parameter

+

Type

+

Description

+

type

+

String

+

Type. Generally, the value is cdm.

+

version

+

String

+

Cluster version

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7 ClusterDetailInstance

Parameter

+

Type

+

Description

+

flavor

+

flavor object

+

VM flavor of a node. For details, see the descriptions of flavor parameters.

+

volume

+

volume object

+

Disk information of a node. For details, see the descriptions of volume parameters.

+

status

+

String

+

Node status

+
  • 100: creating

    +
  • 200: normal

    +
  • 300: failed

    +
  • 303: failed to be created

    +
  • 400: deleted

    +
  • 800: frozen

    +
+

actions

+

Array of strings

+

Node operation status

+
  • REBOOTING: restarting

    +
  • RESTORING: restoring

    +
  • REBOOT_FAILURE: failed to restart

    +
+

type

+

String

+

Node type. Currently, only cdm is available.

+

id

+

String

+

Node VM ID

+

name

+

String

+

Name of the VM on the node

+

isFrozen

+

String

+

Whether the node is frozen. The value can be 0 (not frozen) or 1 (frozen).

+

components

+

String

+

Component

+

config_status

+

String

+

Node configuration status. The value is null when the cluster list is queried.

+
  • In-Sync: The configuration has been synchronized.

    +
  • Applying: The configuration is in progress.

    +
  • Sync-Failure: The configuration fails.

    +
+

role

+

String

+

Instance role

+

group

+

String

+

Group

+

links

+

Array of ClusterLinks objects

+

Link information

+

paramsGroupId

+

String

+

Group ID

+

publicIp

+

String

+

Public IP address

+

manageIp

+

String

+

Management IP address

+

trafficIp

+

String

+

Traffic IP address

+

shard_id

+

String

+

Slice ID

+

manage_fix_ip

+

String

+

Management fix IP address

+

private_ip

+

String

+

Private IP address

+

internal_ip

+

String

+

Internal IP address

+

resource

+

Array of Resource objects

+

Resource information (null is returned for querying the cluster list)

+
+
+ +
+ + + + + + + + + + + + + +
Table 8 flavor

Parameter

+

Type

+

Description

+

id

+

String

+

VM flavor ID

+

links

+

Array of ClusterLinks objects

+

Link information

+
+
+ +
+ + + + + + + + + + + + + +
Table 9 volume

Parameter

+

Type

+

Description

+

type

+

String

+

Type of disks on the node. Only local disks are supported.

+

size

+

Long

+

Size of the disk on the node (GB)

+
+
+ +
+ + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + +
Table 11 Resource

Parameter

+

Type

+

Description

+

resource_id

+

String

+

Resource ID

+

resource_type

+

String

+

Resource type: server

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 12 ClusterTask

Parameter

+

Type

+

Description

+

description

+

String

+

Task description

+

id

+

String

+

Task ID

+

name

+

String

+

Task name

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 13 ActionProgress

Parameter

+

Type

+

Description

+

CREATING

+

String

+

Cluster creation progress, for example, 29%

+

GROWING

+

String

+

Cluster expansion progress, for example, 29%

+

RESTORING

+

String

+

Cluster restoration progress, for example, 29%

+

SNAPSHOTTING

+

String

+

Cluster snapshotting progress, for example, 29%

+

REPAIRING

+

String

+

Cluster repairing progress, for example, 29%

+
+
+ +
+ + + + + + + + + +
Table 14 FailedReasons

Parameter

+

Type

+

Description

+

CREATE_FAILED

+

CREATE_FAILED object

+

Cause of the cluster creation failure

+
+
+ +
+ + + + + + + + + + + + + +
Table 15 CREATE_FAILED

Parameter

+

Type

+

Description

+

errorCode

+

String

+

Error code

+

errorMsg

+

String

+

Failure cause

+
+
+
+

Example Requests

GET /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "clusters" : [ {
+    "publicEndpoint" : "49.xx.xx.10",
+    "actionProgress" : { },
+    "created" : "2018-09-05T08:38:25",
+    "name" : "cdm-c018",
+    "statusDetail" : "Normal",
+    "id" : "bae65496-643e-47ca-84af-948672de7eeb",
+    "isFrozen" : "0",
+    "updated" : "2018-09-05T08:38:25",
+    "status" : "200"
+  } ]
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

ok

+

400

+

Request error.

+

401

+

Authentication failed.

+

403

+

You do not have required permissions to perform this operation.

+

404

+

The requested resource was not found.

+

500

+

An internal service error occurred. For details, see error codes.

+

503

+

Service unavailable.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/PARAMETERS.txt b/docs/dataartsstudio/api-ref/PARAMETERS.txt new file mode 100644 index 000000000..6da8d5f07 --- /dev/null +++ b/docs/dataartsstudio/api-ref/PARAMETERS.txt @@ -0,0 +1,3 @@ +version="" +language="en-us" +type="" \ No newline at end of file diff --git a/docs/dataartsstudio/api-ref/RestartCluster.html b/docs/dataartsstudio/api-ref/RestartCluster.html new file mode 100644 index 000000000..8cf9b3d31 --- /dev/null +++ b/docs/dataartsstudio/api-ref/RestartCluster.html @@ -0,0 +1,256 @@ + + +

Restarting a Cluster

+

Function

This API is used to restart a cluster.

+
+

URI

POST /v1.1/{project_id}/clusters/{cluster_id}/action

+ +
+ + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+ +
+ + + + + + + + + + + +
Table 3 Request body parameters

Parameter

+

Mandatory

+

Type

+

Description

+

restart

+

Yes

+

restart object

+

Cluster restart. For details about how to define the cluster to restart, see the descriptions of restart parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 restart

Parameter

+

Mandatory

+

Type

+

Description

+

restartDelayTime

+

No

+

Integer

+

Restart delay, in seconds

+

restartMode

+

No

+

String

+

Restart mode

+
  • IMMEDIATELY: immediate restart

    +
  • FORCELY: forcible restart

    +
  • SOFTLY: common restart

    +
+

The default value is IMMEDIATELY. Forcibly restarting the service process will interrupt the service process and restart the VMs in the cluster.

+

restartLevel

+

No

+

String

+

Restart level

+
  • SERVICE: service restart

    +
  • VM: VM restart

    +
+

The default value is SERVICE.

+

type

+

No

+

String

+

Type of the cluster to be restarted. The value can be set to cdm only.

+

instance

+

No

+

String

+

Reserved field. When restartLevel is set to SERVICE, this parameter is mandatory and an empty string should be entered.

+

group

+

No

+

String

+

Reserved field. When restartLevel is set to SERVICE, this parameter is mandatory and an empty string should be entered.

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 5 Response body parameters

Parameter

+

Type

+

Description

+

jobId

+

String

+

Job ID

+
+
+
+

Example Requests

Restarting a Cluster

+
POST /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb/action
+
+{
+  "restart" : {
+    "instance" : "",
+    "type" : "cdm",
+    "group" : ""
+  }
+}
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "jobId" : "ff8080815e59d92d015e5b27ccb0004d"
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

ok

+

400

+

Request error.

+

401

+

Authentication failed.

+

403

+

You do not have required permissions to perform this operation.

+

404

+

The requested resource was not found.

+

500

+

An internal service error occurred. For details, see error codes.

+

503

+

Service unavailable.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/ShowClusterDetail.html b/docs/dataartsstudio/api-ref/ShowClusterDetail.html new file mode 100644 index 000000000..f11f5d125 --- /dev/null +++ b/docs/dataartsstudio/api-ref/ShowClusterDetail.html @@ -0,0 +1,1000 @@ + + +

Querying Cluster Details

+

Function

This API is used to query cluster details.

+
+

URI

GET /v1.1/{project_id}/clusters/{cluster_id}

+ +
+ + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Response body parameters

Parameter

+

Type

+

Description

+

publicEndpoint

+

String

+

EIP bound to the cluster

+

instances

+

Array of ClusterDetailInstance objects

+

Cluster node information. For details, see the descriptions of instances parameters.

+

security_group_id

+

String

+

Security group ID

+

subnet_id

+

String

+

Subnet ID

+

vpc_id

+

String

+

VPC ID

+

customerConfig

+

CustomerConfig object

+

User configuration

+

datastore

+

Datastore object

+

CDM information

+

isAutoOff

+

Boolean

+

Auto shutdown

+

publicEndpointDomainName

+

String

+

Domain name for the EIP bound to the cluster

+

bakExpectedStartTime

+

String

+

Start time

+

bakKeepDay

+

Integer

+

Retention duration

+

maintainWindow

+

maintainWindow object

+

Maintenance window

+

recentEvent

+

Integer

+

Number of events

+

flavorName

+

String

+

Flavor name

+

azName

+

String

+

AZ name

+

endpointDomainName

+

String

+

Peer domain name

+

publicEndpointStatus

+

publicEndpointStatus object

+

EIP status

+

isScheduleBootOff

+

Boolean

+

Whether to enable scheduled startup/shutdown. The scheduled startup/shutdown and auto shutdown functions cannot be enabled at the same time.

+

namespace

+

String

+

Namespace

+

eipId

+

String

+

EIP ID

+

failedReasons

+

FailedReasons object

+

Failure cause. If this parameter is left empty, the cluster is in normal state.

+

dbuser

+

String

+

Database user

+

links

+

Array of ClusterLinks objects

+

Cluster link information

+

clusterMode

+

String

+

Cluster mode: sharding

+

task

+

ClusterTask object

+

Task information

+

created

+

String

+

Cluster creation time in ISO 8601 format: YYYY-MM-DDThh:mm:ssZ

+

statusDetail

+

String

+

Cluster status: normal

+

config_status

+

String

+

Cluster configuration status

+
  • In-Sync: The configuration has been synchronized.

    +
  • Applying: The configuration is in progress.

    +
  • Sync-Failure: The configuration fails.

    +
+

actionProgress

+

ActionProgress object

+

Cluster operation progress, which consists of a key and a value. The key indicates an ongoing task, and the value indicates the progress of the ongoing task. An example is "action_progress":{"SNAPSHOTTING":"16%"}.

+

name

+

String

+

Cluster name

+

id

+

String

+

Cluster ID

+

isFrozen

+

String

+

Whether the cluster is frozen. The value can be 0 (not frozen) or 1 (frozen).

+

actions

+

Array of strings

+

Cluster configuration status. Options: - In-Sync: The cluster configuration has been synchronized. - Applying: The cluster is being configured. - Sync-Failure: The cluster configuration failed.

+

updated

+

String

+

Cluster update time in ISO 8601 format: YYYY-MM-DDThh:mm:ssZ

+

status

+

String

+

Cluster status

+
  • 100: creating

    +
  • 200: normal

    +
  • 300: failed

    +
  • 303: failed to be created

    +
  • 800: frozen

    +
  • 900: stopped

    +
  • 910: stopping

    +
  • 920: starting

    +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 ClusterDetailInstance

Parameter

+

Type

+

Description

+

flavor

+

flavor object

+

VM flavor of a node. For details, see the descriptions of flavor parameters.

+

volume

+

volume object

+

Disk information of a node. For details, see the descriptions of volume parameters.

+

status

+

String

+

Node status

+
  • 100: creating

    +
  • 200: normal

    +
  • 300: failed

    +
  • 303: failed to be created

    +
  • 400: deleted

    +
  • 800: frozen

    +
+

actions

+

Array of strings

+

Node operation status

+
  • REBOOTING: restarting

    +
  • RESTORING: restoring

    +
  • REBOOT_FAILURE: failed to restart

    +
+

type

+

String

+

Node type. Currently, only cdm is available.

+

id

+

String

+

Node VM ID

+

name

+

String

+

Name of the VM on the node

+

isFrozen

+

String

+

Whether the node is frozen. The value can be 0 (not frozen) or 1 (frozen).

+

components

+

String

+

Component

+

config_status

+

String

+

Node configuration status. The value is null when the cluster list is queried.

+
  • In-Sync: The configuration has been synchronized.

    +
  • Applying: The configuration is in progress.

    +
  • Sync-Failure: The configuration fails.

    +
+

role

+

String

+

Instance role

+

group

+

String

+

Group

+

links

+

Array of ClusterLinks objects

+

Link information

+

paramsGroupId

+

String

+

Group ID

+

publicIp

+

String

+

Public IP address

+

manageIp

+

String

+

Management IP address

+

trafficIp

+

String

+

Traffic IP address

+

shard_id

+

String

+

Slice ID

+

manage_fix_ip

+

String

+

Management fix IP address

+

private_ip

+

String

+

Private IP address

+

internal_ip

+

String

+

Internal IP address

+

resource

+

Array of Resource objects

+

Resource information (null is returned for querying the cluster list)

+
+
+ +
+ + + + + + + + + + + + + +
Table 5 flavor

Parameter

+

Type

+

Description

+

id

+

String

+

VM flavor ID

+

links

+

Array of ClusterLinks objects

+

Link information

+
+
+ +
+ + + + + + + + + + + + + +
Table 6 volume

Parameter

+

Type

+

Description

+

type

+

String

+

Type of disks on the node. Only local disks are supported.

+

size

+

Long

+

Size of the disk on the node (GB)

+
+
+ +
+ + + + + + + + + + + + + +
Table 7 Resource

Parameter

+

Type

+

Description

+

resource_id

+

String

+

Resource ID

+

resource_type

+

String

+

Resource type: server

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 8 CustomerConfig

Parameter

+

Type

+

Description

+

failureRemind

+

String

+

Failure notification

+

clusterName

+

String

+

Cluster type

+

serviceProvider

+

String

+

Service provisioning

+

localDisk

+

String

+

Whether the disk is a local disk

+

ssl

+

String

+

Whether to enable SSL

+

createFrom

+

String

+

Source

+

resourceId

+

String

+

Resource ID

+

flavorType

+

String

+

Flavor type

+

workSpaceId

+

String

+

Workspace ID

+

trial

+

String

+

Trial

+
+
+ +
+ + + + + + + + + + + + + +
Table 9 Datastore

Parameter

+

Type

+

Description

+

type

+

String

+

Type. Generally, the value is cdm.

+

version

+

String

+

Cluster version

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 10 maintainWindow

Parameter

+

Type

+

Description

+

day

+

String

+

Day of a week

+

startTime

+

String

+

Start time

+

endTime

+

String

+

End time

+
+
+ +
+ + + + + + + + + + + + + +
Table 11 publicEndpointStatus

Parameter

+

Type

+

Description

+

status

+

String

+

Status

+

errorMessage

+

String

+

Error message

+
+
+ +
+ + + + + + + + + +
Table 12 FailedReasons

Parameter

+

Type

+

Description

+

CREATE_FAILED

+

CREATE_FAILED object

+

Cause of the cluster creation failure

+
+
+ +
+ + + + + + + + + + + + + +
Table 13 CREATE_FAILED

Parameter

+

Type

+

Description

+

errorCode

+

String

+

Error code

+

errorMsg

+

String

+

Failure cause

+
+
+ +
+ + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
Table 15 ClusterTask

Parameter

+

Type

+

Description

+

description

+

String

+

Task description

+

id

+

String

+

Task ID

+

name

+

String

+

Task name

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Table 16 ActionProgress

Parameter

+

Type

+

Description

+

CREATING

+

String

+

Cluster creation progress, for example, 29%

+

GROWING

+

String

+

Cluster expansion progress, for example, 29%

+

RESTORING

+

String

+

Cluster restoration progress, for example, 29%

+

SNAPSHOTTING

+

String

+

Cluster snapshotting progress, for example, 29%

+

REPAIRING

+

String

+

Cluster repairing progress, for example, 29%

+
+
+
+

Example Requests

GET /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "publicEndpoint" : "49.xx.xx.10",
+  "instances" : [ {
+    "flavor" : {
+      "id" : "fb8fe666-6734-4b11-bc6c-43d11db3c745"
+    },
+    "volume" : {
+      "size" : "100",
+      "type" : "LOCAL_DISK"
+    },
+    "name" : "cdm-c018",
+    "id" : "635dce67-3df8-4756-b4c7-90e45e687367",
+    "isFrozen" : "0",
+    "type" : "cdm",
+    "actions" : "REBOOTING",
+    "config_status" : "In-Sync",
+    "status" : "200"
+  } ],
+  "created" : "2018-09-05T08:38:25",
+  "statusDetail" : "Normal",
+  "actionProgress" : { },
+  "name" : "cdm-c018",
+  "id" : "bae65496-643e-47ca-84af-948672de7eeb",
+  "isFrozen" : "0",
+  "actions" : "REBOOTING",
+  "updated" : "2018-09-05T08:38:25",
+  "status" : "200"
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

ok

+

400

+

Request error.

+

401

+

Authentication failed.

+

403

+

You do not have required permissions to perform this operation.

+

404

+

The requested resource was not found.

+

500

+

An internal service error occurred. For details, see error codes.

+

503

+

Service unavailable.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/ShowJobStatus.html b/docs/dataartsstudio/api-ref/ShowJobStatus.html new file mode 100644 index 000000000..ccf841a99 --- /dev/null +++ b/docs/dataartsstudio/api-ref/ShowJobStatus.html @@ -0,0 +1,393 @@ + + +

Querying Job Status

+

Function

This API is used to query the job status.

+
+

URI

GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}/status

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+

job_name

+

Yes

+

String

+

Job name

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 3 Response body parameters

Parameter

+

Type

+

Description

+

submissions

+

Array of Submission objects

+

Job running information. For details, see the descriptions of submission parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Submission

Parameter

+

Type

+

Description

+

isIncrementing

+

Boolean

+

Whether the job migrates incremental data

+

job-name

+

String

+

Job name

+

counters

+

counters object

+

Job running result statistics. This parameter is available only when status is SUCCEEDED. For details, see the description of the counters parameter.

+

isStopingIncrement

+

String

+

Whether to stop incremental data migration

+

is-execute-auto

+

Boolean

+

Whether to execute the job as scheduled

+

last-update-date

+

Long

+

Time when the job was last updated

+

last-udpate-user

+

String

+

User who last updated the job status

+

isDeleteJob

+

Boolean

+

Whether to delete the job after it is executed

+

creation-user

+

String

+

User who created the job

+

creation-date

+

Long

+

Creation time

+

external-id

+

String

+

Job ID

+

progress

+

Float

+

Job progress. If a job fails, the value is -1. Otherwise, the value ranges from 0 to 100.

+

submission-id

+

Integer

+

Job submission ID

+

delete_rows

+

Integer

+

Number of deleted rows

+

update_rows

+

Integer

+

Number of updated rows

+

write_rows

+

Integer

+

Number of written rows

+

execute-date

+

Long

+

Execution time

+

status

+

String

+

Job status

+
  • BOOTING: The job is starting.

    +
  • FAILURE_ON_SUBMIT: The job failed to be submitted.

    +
  • RUNNING: The job is running.

    +
  • SUCCEEDED: The job was successfully executed.

    +
  • FAILED: The job execution failed.

    +
  • UNKNOWN: The job status is unknown.

    +
  • NEVER_EXECUTED: The job was not executed.

    +
+

error-details

+

String

+

Error details. This parameter is available only when status is FAILED.

+

error-summary

+

String

+

Error summary. This parameter is available only when status is FAILED.

+
+
+ +
+ + + + + + + + + +
Table 5 counters

Parameter

+

Type

+

Description

+

org.apache.sqoop.submission.counter.SqoopCounters

+

counter object

+

Job running result statistics. For details, see the descriptions of counter parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 counter

Parameter

+

Type

+

Description

+

BYTES_WRITTEN

+

Long

+

Number of bytes that are written

+

TOTAL_FILES

+

Integer

+

Total number of files

+

ROWS_READ

+

Long

+

Number of rows that are read

+

BYTES_READ

+

Long

+

Number of bytes that are read

+

ROWS_WRITTEN

+

Long

+

Number of rows that are written

+

FILES_WRITTEN

+

Integer

+

Number of files that are written

+

FILES_READ

+

Integer

+

Number of files that are read

+

TOTAL_SIZE

+

Long

+

Total number of bytes

+

FILES_SKIPPED

+

Integer

+

Number of files that are skipped

+

ROWS_WRITTEN_SKIPPED

+

Long

+

Number of rows that are skipped

+
+
+
+

Example Requests

GET /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/job/jdbc2hive/status
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "submissions" : [ {
+    "job-name" : "jdbc2hive",
+    "creation-user" : "cdm",
+    "creation-date" : "1536905778725",
+    "progress" : 1,
+    "status" : "BOOTING"
+  } ]
+}
+
+

Status Codes

+
+ + + + + + + +

Status Code

+

Description

+

200

+

ok

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/ShowJobs.html b/docs/dataartsstudio/api-ref/ShowJobs.html new file mode 100644 index 000000000..3c2fcf7c2 --- /dev/null +++ b/docs/dataartsstudio/api-ref/ShowJobs.html @@ -0,0 +1,690 @@ + + +

Querying a Job

+

Function

This API is used to query jobs.

+
+

URI

GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+

job_name

+

Yes

+

String

+

Job name. When this parameter is set to all, all jobs are to be queried.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Query Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

filter

+

No

+

String

+

When job_name is all, this parameter is used for fuzzy job filtering.

+

page_no

+

No

+

Integer

+

Page number

+

Minimum: 1

+

page_size

+

No

+

Integer

+

Number of jobs on each page. The value ranges from 10 to 100.

+

Minimum: 10

+

Maximum: 100

+

jobType

+

No

+

String

+

Type of the jobs to be queried

+
  • jobType=NORMAL_JOB: table/file migration job

    +
  • jobType=BATCH_JOB: entire DB migration job

    +
  • jobType=SCENARIO_JOB: scenario migration job If this parameter is not specified, only table/file migration jobs are queried by default.

    +
+

Enumeration values:

+
  • NORMAL_JOB

    +
  • BATCH_JOB

    +
  • SCENARIO_JOB

    +
+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 3 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 4 Response body parameters

Parameter

+

Type

+

Description

+

total

+

Integer

+

Number of jobs

+

jobs

+

Array of Job objects

+

Job list. For details, see the descriptions of jobs parameters.

+

page_no

+

Integer

+

Page number. Jobs on the specified page will be returned.

+

page_size

+

Integer

+

Number of jobs on each page.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 Job

Parameter

+

Type

+

Description

+

job_type

+

String

+

Job type

+
  • NORMAL_JOB: table/file migration

    +
  • BATCH_JOB: entire DB migration

    +
  • SCENARIO_JOB: scenario migration

    +
+

Enumeration values:

+
  • NORMAL_JOB

    +
  • BATCH_JOB

    +
  • SCENARIO_JOB

    +
+

from-connector-name

+

String

+

Source link type

+

to-config-values

+

ConfigValues object

+

Destination link parameter configuration

+

to-link-name

+

String

+

Destination link name

+

driver-config-values

+

ConfigValues object

+

Job parameter configuration

+

from-config-values

+

ConfigValues object

+

Source link parameter configuration

+

to-connector-name

+

String

+

Destination link type

+

name

+

String

+

Job name, which contains 1 to 240 characters

+

Minimum: 1

+

Maximum: 240

+

from-link-name

+

String

+

Source link name

+

creation-user

+

String

+

User who created the job

+

creation-date

+

Long

+

Time when the job was created, accurate to millisecond

+

update-date

+

Long

+

Time when the job was last updated, accurate to millisecond

+

is_incre_job

+

Boolean

+

Incremental or not

+

flag

+

Integer

+

Flag

+

files_read

+

Integer

+

Number of read files

+

update-user

+

String

+

User who last updated the job

+

external_id

+

String

+

External ID

+

type

+

String

+

Task type

+

execute_start_date

+

Long

+

Execution start date

+

delete_rows

+

Integer

+

Number of deleted rows

+

enabled

+

Boolean

+

Whether to activate the link

+

bytes_written

+

Long

+

Number of written bytes

+

id

+

Integer

+

Job ID

+

is_use_sql

+

Boolean

+

Whether to use SQL statements

+

update_rows

+

Integer

+

Number of updated rows

+

group_name

+

String

+

Group name

+

bytes_read

+

Long

+

Number of read bytes

+

execute_update_date

+

Long

+

Execution update date

+

write_rows

+

Integer

+

Number of written rows

+

rows_written

+

Integer

+

Number of written rows

+

rows_read

+

Long

+

Number of rows that are read

+

files_written

+

Integer

+

Number of written files

+

is_incrementing

+

Boolean

+

Incremental or not

+

execute_create_date

+

Long

+

Execution creation date

+

status

+

String

+

Job execution status

+
  • BOOTING: The job is starting.

    +
  • RUNNING: The job is running.

    +
  • SUCCEEDED: The job was successfully executed.

    +
  • FAILED: The job execution failed.

    +
  • NEW: The job was not executed.

    +
+
+
+ +
+ + + + + + + + + + + + + +
Table 6 ConfigValues

Parameter

+

Type

+

Description

+

configs

+

Array of configs objects

+

The data structures of source link parameters, destination link parameters, and job parameters are the same. However, the inputs parameter varies. For details, see the descriptions of configs parameters.

+

extended-configs

+

extended-configs object

+

Extended configuration. For details, see the descriptions of extended-configs parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 7 configs

Parameter

+

Type

+

Description

+

inputs

+

Array of Input objects

+

Input parameter list. Each element in the list is in name,value format. For details, see the descriptions of inputs parameters. In the from-config-values data structure, the value of this parameter varies with the source link type. For details, see section "Source Job Parameters" in the Cloud Data Migration User Guide. In the to-cofig-values data structure, the value of this parameter varies with the destination link type. For details, see section "Destination Job Parameters" in the Cloud Data Migration User Guide. For details about the inputs parameter in the driver-config-values data structure, see the job parameter descriptions.

+

name

+

String

+

Configuration name. The value is fromJobConfig for a source job, toJobConfig for a destination job, and linkConfig for a link.

+

id

+

Integer

+

Configuration ID

+

type

+

String

+

Configuration type

+
+
+ +
+ + + + + + + + + + + + + + + + + +
Table 8 Input

Parameter

+

Type

+

Description

+

name

+

String

+

Parameter name

+

value

+

String

+

Parameter value

+

type

+

String

+

Value type

+
+
+ +
+ + + + + + + + + + + + + +
Table 9 extended-configs

Parameter

+

Type

+

Description

+

name

+

String

+

Name

+

value

+

String

+

Value

+
+
+
+

Example Requests

GET /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/job/all?jobType=NORMAL_JOB
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "total" : 1,
+  "jobs" : [ {
+    "job_type" : "NORMAL_JOB",
+    "from-connector-name" : "elasticsearch-connector",
+    "to-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "toJobConfig.streamName",
+          "value" : "dis-lkGm"
+        }, {
+          "name" : "toJobConfig.separator",
+          "value" : "|"
+        }, {
+          "name" : "toJobConfig.columnList",
+          "value" : "1&2&3"
+        } ],
+        "name" : "toJobConfig"
+      } ]
+    },
+    "to-link-name" : "dis",
+    "driver-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "throttlingConfig.numExtractors",
+          "value" : "1"
+        }, {
+          "name" : "throttlingConfig.submitToCluster",
+          "value" : "false"
+        }, {
+          "name" : "throttlingConfig.numLoaders",
+          "value" : "1"
+        }, {
+          "name" : "throttlingConfig.recordDirtyData",
+          "value" : "false"
+        } ],
+        "name" : "throttlingConfig"
+      }, {
+        "inputs" : { },
+        "name" : "jarConfig"
+      }, {
+        "inputs" : [ {
+          "name" : "schedulerConfig.isSchedulerJob",
+          "value" : "false"
+        }, {
+          "name" : "schedulerConfig.disposableType",
+          "value" : "NONE"
+        } ],
+        "name" : "schedulerConfig"
+      }, {
+        "inputs" : { },
+        "name" : "transformConfig"
+      }, {
+        "inputs" : [ {
+          "name" : "retryJobConfig.retryJobType",
+          "value" : "NONE"
+        } ],
+        "name" : "retryJobConfig"
+      } ]
+    },
+    "from-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "fromJobConfig.index",
+          "value" : "52est"
+        }, {
+          "name" : "fromJobConfig.type",
+          "value" : "est_array"
+        }, {
+          "name" : "fromJobConfig.columnList",
+          "value" : "array_f1_int:long&array_f2_text:string&array_f3_object:nested"
+        }, {
+          "name" : "fromJobConfig.splitNestedField",
+          "value" : "false"
+        } ],
+        "name" : "fromJobConfig"
+      } ]
+    },
+    "to-connector-name" : "dis-connector",
+    "name" : "es_css",
+    "from-link-name" : "css"
+  } ],
+  "page_no" : 1,
+  "page_size" : 10
+}
+
+

Status Codes

+
+ + + + + + + +

Status Code

+

Description

+

200

+

ok

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/ShowLink.html b/docs/dataartsstudio/api-ref/ShowLink.html new file mode 100644 index 000000000..1b1ad1b63 --- /dev/null +++ b/docs/dataartsstudio/api-ref/ShowLink.html @@ -0,0 +1,407 @@ + + +

Querying a Link

+

Function

This API is used to query a link.

+
+

URI

GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/link/{link_name}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+

link_name

+

Yes

+

String

+

Link name

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + +
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + +
+
+

Example Requests

GET /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/link/sftplink
+
+

Example Responses

Status code: 200

+

OK

+
{
+  "links" : [ {
+    "link-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "linkConfig.server",
+          "type" : "STRING",
+          "value" : "100.94.8.163"
+        }, {
+          "name" : "linkConfig.port",
+          "type" : "INTEGER",
+          "value" : 22
+        }, {
+          "name" : "linkConfig.username",
+          "type" : "STRING",
+          "value" : "root"
+        }, {
+          "name" : "linkConfig.password",
+          "type" : "STRING",
+          "value" : "Add password here"
+        } ],
+        "name" : "linkConfig"
+      } ]
+    },
+    "creation-user" : "cdm",
+    "name" : "sftp_link",
+    "creation-date" : 1516674482640,
+    "connector-name" : "sftp-connector",
+    "update-date" : 1516674476022,
+    "enabled" : true,
+    "update-user" : "cdm"
+  } ]
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/ShowSubmissions.html b/docs/dataartsstudio/api-ref/ShowSubmissions.html new file mode 100644 index 000000000..6bd614250 --- /dev/null +++ b/docs/dataartsstudio/api-ref/ShowSubmissions.html @@ -0,0 +1,428 @@ + + +

Querying Job Execution History

+

Function

This API is used to query the job execution history.

+
+

URI

GET /v1.1/{project_id}/clusters/{cluster_id}/cdm/submissions

+ +
+ + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+
+
+ +
+ + + + + + + + + + + +
Table 2 Query Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

jname

+

Yes

+

String

+

Job name

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 3 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 4 Response body parameters

Parameter

+

Type

+

Description

+

submissions

+

Array of Submission objects

+

Job running information. For details, see the descriptions of submission parameters.

+

total

+

Integer

+

Total number of historical records for a job

+

page_no

+

Integer

+

Page number

+

page_size

+

Integer

+

Number of records on each page. The default value is 10.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 Submission

Parameter

+

Type

+

Description

+

isIncrementing

+

Boolean

+

Whether the job migrates incremental data

+

job-name

+

String

+

Job name

+

counters

+

counters object

+

Job running result statistics. This parameter is available only when status is SUCCEEDED. For details, see the description of the counters parameter.

+

isStopingIncrement

+

String

+

Whether to stop incremental data migration

+

is-execute-auto

+

Boolean

+

Whether to execute the job as scheduled

+

last-update-date

+

Long

+

Time when the job was last updated

+

last-udpate-user

+

String

+

User who last updated the job status

+

isDeleteJob

+

Boolean

+

Whether to delete the job after it is executed

+

creation-user

+

String

+

User who created the job

+

creation-date

+

Long

+

Creation time

+

external-id

+

String

+

Job ID

+

progress

+

Float

+

Job progress. If a job fails, the value is -1. Otherwise, the value ranges from 0 to 100.

+

submission-id

+

Integer

+

Job submission ID

+

delete_rows

+

Integer

+

Number of deleted rows

+

update_rows

+

Integer

+

Number of updated rows

+

write_rows

+

Integer

+

Number of written rows

+

execute-date

+

Long

+

Execution time

+

status

+

String

+

Job status

+
  • BOOTING: The job is starting.

    +
  • FAILURE_ON_SUBMIT: The job failed to be submitted.

    +
  • RUNNING: The job is running.

    +
  • SUCCEEDED: The job was successfully executed.

    +
  • FAILED: The job execution failed.

    +
  • UNKNOWN: The job status is unknown.

    +
  • NEVER_EXECUTED: The job was not executed.

    +
+

error-details

+

String

+

Error details. This parameter is available only when status is FAILED.

+

error-summary

+

String

+

Error summary. This parameter is available only when status is FAILED.

+
+
+ +
+ + + + + + + + + +
Table 6 counters

Parameter

+

Type

+

Description

+

org.apache.sqoop.submission.counter.SqoopCounters

+

counter object

+

Job running result statistics. For details, see the descriptions of counter parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7 counter

Parameter

+

Type

+

Description

+

BYTES_WRITTEN

+

Long

+

Number of bytes that are written

+

TOTAL_FILES

+

Integer

+

Total number of files

+

ROWS_READ

+

Long

+

Number of rows that are read

+

BYTES_READ

+

Long

+

Number of bytes that are read

+

ROWS_WRITTEN

+

Long

+

Number of rows that are written

+

FILES_WRITTEN

+

Integer

+

Number of files that are written

+

FILES_READ

+

Integer

+

Number of files that are read

+

TOTAL_SIZE

+

Long

+

Total number of bytes

+

FILES_SKIPPED

+

Integer

+

Number of files that are skipped

+

ROWS_WRITTEN_SKIPPED

+

Long

+

Number of rows that are skipped

+
+
+
+

Example Requests

GET /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/submissions?jname=jdbc2hive
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "submissions" : [ {
+    "job-name" : "jdbc2hive",
+    "creation-user" : "cdm",
+    "creation-date" : "1536905778725",
+    "progress" : 1,
+    "status" : "BOOTING"
+  } ]
+}
+
+

Status Codes

+
+ + + + + + + +

Status Code

+

Description

+

200

+

ok

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/StartCluster.html b/docs/dataartsstudio/api-ref/StartCluster.html new file mode 100644 index 000000000..a7f308b5f --- /dev/null +++ b/docs/dataartsstudio/api-ref/StartCluster.html @@ -0,0 +1,175 @@ + + +

Starting a Cluster

+

Function

This API is used to start a cluster.

+
+

URI

POST /v1.1/{project_id}/clusters/{cluster_id}/action

+ +
+ + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+ +
+ + + + + + + + + + + +
Table 3 Request body parameters

Parameter

+

Mandatory

+

Type

+

Description

+

start

+

Yes

+

Object

+

Starting a cluster. This parameter is an empty object.

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 4 Response body parameters

Parameter

+

Type

+

Description

+

jobId

+

Array of strings

+

Job ID

+
+
+
+

Example Requests

Starting a Cluster

+
POST /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb/action
+
+{
+  "start" : { }
+}
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "jobId" : [ "ff8080815e59d92d015e5b27ccb0004d" ]
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

ok

+

400

+

Request error.

+

401

+

Authentication failed.

+

403

+

You do not have required permissions to perform this operation.

+

404

+

The requested resource was not found.

+

500

+

An internal service error occurred. For details, see error codes.

+

503

+

Service unavailable.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/StartJob.html b/docs/dataartsstudio/api-ref/StartJob.html new file mode 100644 index 000000000..05892d6fc --- /dev/null +++ b/docs/dataartsstudio/api-ref/StartJob.html @@ -0,0 +1,264 @@ + + +

Starting a Job

+

Function

This API is used to start a job.

+
+

URI

PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}/start

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+

job_name

+

Yes

+

String

+

Job name

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 3 Response body parameters

Parameter

+

Type

+

Description

+

submissions

+

Array of StartJobSubmission objects

+

Job running information. For details, see the descriptions of submission parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 StartJobSubmission

Parameter

+

Type

+

Description

+

isIncrementing

+

Boolean

+

Whether the job migrates incremental data

+

delete_rows

+

Integer

+

Number of deleted rows

+

update_rows

+

Integer

+

Number of updated rows

+

write_rows

+

Integer

+

Number of written rows

+

submission-id

+

Integer

+

ID of the submitted job

+

job-name

+

String

+

Job name

+

creation-user

+

String

+

User who created the job

+

creation-date

+

Long

+

Job creation time, accurate to millisecond

+

execute-date

+

Long

+

Job execution time

+

progress

+

Float

+

Job progress. If a job fails, the value is -1. Otherwise, the value ranges from 0 to 100.

+

status

+

String

+

Job status

+
  • BOOTING: The job is starting.

    +
  • FAILURE_ON_SUBMIT: The job failed to be submitted.

    +
  • RUNNING: The job is running.

    +
  • SUCCEEDED: The job was successfully executed.

    +
  • FAILED: The job execution failed.

    +
  • UNKNOWN: The job status is unknown.

    +
  • NEVER_EXECUTED: The job was not executed.

    +
+

isStopingIncrement

+

String

+

Whether to stop incremental data migration

+

is-execute-auto

+

Boolean

+

Whether to execute the job as scheduled

+

last-update-date

+

Long

+

Time when the job was last updated

+

last-udpate-user

+

String

+

User who last updated the job status

+

isDeleteJob

+

Boolean

+

Whether to delete the job after it is executed

+
+
+
+

Example Requests

PUT /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/job/jdbc2hive/start
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "submissions" : [ {
+    "job-name" : "jdbc2hive",
+    "creation-user" : "cdm",
+    "creation-date" : "1536905778725",
+    "progress" : 1,
+    "status" : "BOOTING"
+  } ]
+}
+
+

Status Codes

+
+ + + + + + + +

Status Code

+

Description

+

200

+

ok

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/StopCluster.html b/docs/dataartsstudio/api-ref/StopCluster.html new file mode 100644 index 000000000..02ed550c7 --- /dev/null +++ b/docs/dataartsstudio/api-ref/StopCluster.html @@ -0,0 +1,213 @@ + + +

Stopping a Cluster

+

Function

This API is used to stop a cluster.

+
+

URI

POST /v1.1/{project_id}/clusters/{cluster_id}/action

+ +
+ + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+ +
+ + + + + + + + + + + +
Table 3 Request body parameters

Parameter

+

Mandatory

+

Type

+

Description

+

stop

+

Yes

+

stop object

+

Cluster stop operation, which defines the parameters for stopping a cluster.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 4 stop

Parameter

+

Mandatory

+

Type

+

Description

+

stopMode

+

No

+

String

+

Stop mode

+
  • IMMEDIATELY: immediate stop
  • GRACEFULLY: graceful stop
+

Enumeration values:

+
  • IMMEDIATELY
  • GRACEFULLY
+

delayTime

+

No

+

Integer

+

Stop delay, in seconds. This parameter is valid only when stopMode is set to GRACEFULLY. If the value of this parameter is set to -1, the system waits for all jobs to complete and stops accepting new jobs. If the value of this parameter is greater than 0, the system stops the cluster after the specified time and stops accepting new jobs.

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 5 Response body parameters

Parameter

+

Type

+

Description

+

jobId

+

Array of strings

+

Job ID

+
+
+
+

Example Requests

Stopping a Cluster

+
POST /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb/action
+
+{
+  "stop" : {
+    "stopMode" : "GRACEFULLY",
+    "delayTime" : -1
+  }
+}
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "jobId" : [ "ff8080815e59d92d015e5b27ccb0004d" ]
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +

Status Code

+

Description

+

200

+

ok

+

400

+

Request error.

+

401

+

Authentication failed.

+

403

+

You do not have required permissions to perform this operation.

+

404

+

The requested resource was not found.

+

500

+

An internal service error occurred. For details, see error codes.

+

503

+

Service unavailable.

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/StopJob.html b/docs/dataartsstudio/api-ref/StopJob.html new file mode 100644 index 000000000..1fa2d7f25 --- /dev/null +++ b/docs/dataartsstudio/api-ref/StopJob.html @@ -0,0 +1,154 @@ + + +

Stopping a Job

+

Function

This API is used to stop a job.

+
+

URI

PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}/stop

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+

job_name

+

Yes

+

String

+

Job name

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 3 Response body parameters

Parameter

+

Type

+

Description

+

validation-result

+

Array of JobValidationResult objects

+

Validation result. If the job fails to be stopped, the failure cause is returned. For details, see the validation-result parameter. If the job is stopped, an empty list is returned.

+
+
+ +
+ + + + + + + + + + + + + +
Table 4 JobValidationResult

Parameter

+

Type

+

Description

+

message

+

String

+

Error message

+

status

+

String

+

ERROR,WARNING

+

Enumeration values:

+
  • ERROR

    +
  • WARNING

    +
+
+
+
+

Example Requests

PUT /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/job/jdbc2hive/stop
+
+

Example Responses

Status code: 200

+

ok

+
{ }
+
+

Status Codes

+
+ + + + + + + +

Status Code

+

Description

+

200

+

ok

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/UpdateJob.html b/docs/dataartsstudio/api-ref/UpdateJob.html new file mode 100644 index 000000000..a60fafe99 --- /dev/null +++ b/docs/dataartsstudio/api-ref/UpdateJob.html @@ -0,0 +1,817 @@ + + +

Modifying a Job

+

Function

This API is used to modify a job.

+
+

URI

PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/job/{job_name}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+

job_name

+

Yes

+

String

+

Job name

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + +
Table 2 Request header parameters

Parameter

+

Mandatory

+

Type

+

Description

+

X-Auth-Token

+

Yes

+

String

+

User token. It can be obtained by calling the IAM API (value of X-Subject-Token in the response header).

+
+
+ +
+ + + + + + + + + + + +
Table 3 Request body parameters

Parameter

+

Mandatory

+

Type

+

Description

+

jobs

+

Yes

+

Array of Job objects

+

Job list. For details, see the descriptions of jobs parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Job

Parameter

+

Mandatory

+

Type

+

Description

+

job_type

+

No

+

String

+

Job type

+
  • NORMAL_JOB: table/file migration

    +
  • BATCH_JOB: entire DB migration

    +
  • SCENARIO_JOB: scenario migration

    +
+

Enumeration values:

+
  • NORMAL_JOB

    +
  • BATCH_JOB

    +
  • SCENARIO_JOB

    +
+

from-connector-name

+

Yes

+

String

+

Source link type

+

to-config-values

+

Yes

+

ConfigValues object

+

Destination link parameter configuration

+

to-link-name

+

Yes

+

String

+

Destination link name

+

driver-config-values

+

Yes

+

ConfigValues object

+

Job parameter configuration

+

from-config-values

+

Yes

+

ConfigValues object

+

Source link parameter configuration

+

to-connector-name

+

No

+

String

+

Destination link type

+

name

+

No

+

String

+

Job name, which contains 1 to 240 characters

+

Minimum: 1

+

Maximum: 240

+

from-link-name

+

No

+

String

+

Source link name

+

creation-user

+

No

+

String

+

User who created the job

+

creation-date

+

No

+

Long

+

Time when the job was created, accurate to millisecond

+

update-date

+

No

+

Long

+

Time when the job was last updated, accurate to millisecond

+

is_incre_job

+

No

+

Boolean

+

Incremental or not

+

flag

+

No

+

Integer

+

Flag

+

files_read

+

No

+

Integer

+

Number of read files

+

update-user

+

No

+

String

+

User who last updated the job

+

external_id

+

No

+

String

+

External ID

+

type

+

No

+

String

+

Task type

+

execute_start_date

+

No

+

Long

+

Execution start date

+

delete_rows

+

No

+

Integer

+

Number of deleted rows

+

enabled

+

No

+

Boolean

+

Whether to activate the link

+

bytes_written

+

No

+

Long

+

Number of written bytes

+

id

+

No

+

Integer

+

Job ID

+

is_use_sql

+

No

+

Boolean

+

Whether to use SQL statements

+

update_rows

+

No

+

Integer

+

Number of updated rows

+

group_name

+

No

+

String

+

Group name

+

bytes_read

+

No

+

Long

+

Number of read bytes

+

execute_update_date

+

No

+

Long

+

Execution update date

+

write_rows

+

No

+

Integer

+

Number of written rows

+

rows_written

+

No

+

Integer

+

Number of written rows

+

rows_read

+

No

+

Long

+

Number of rows that are read

+

files_written

+

No

+

Integer

+

Number of written files

+

is_incrementing

+

No

+

Boolean

+

Incremental or not

+

execute_create_date

+

No

+

Long

+

Execution creation date

+

status

+

No

+

String

+

Job execution status

+
  • BOOTING: The job is starting.

    +
  • RUNNING: The job is running.

    +
  • SUCCEEDED: The job was successfully executed.

    +
  • FAILED: The job execution failed.

    +
  • NEW: The job was not executed.

    +
+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 5 ConfigValues

Parameter

+

Mandatory

+

Type

+

Description

+

configs

+

Yes

+

Array of configs objects

+

The data structures of source link parameters, destination link parameters, and job parameters are the same. However, the inputs parameter varies. For details, see the descriptions of configs parameters.

+

extended-configs

+

No

+

extended-configs object

+

Extended configuration. For details, see the descriptions of extended-configs parameters.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 configs

Parameter

+

Mandatory

+

Type

+

Description

+

inputs

+

Yes

+

Array of Input objects

+

Input parameter list. Each element in the list is in name,value format. For details, see the descriptions of inputs parameters. In the from-config-values data structure, the value of this parameter varies with the source link type. For details, see section "Source Job Parameters" in the Cloud Data Migration User Guide. In the to-cofig-values data structure, the value of this parameter varies with the destination link type. For details, see section "Destination Job Parameters" in the Cloud Data Migration User Guide. For details about the inputs parameter in the driver-config-values data structure, see the job parameter descriptions.

+

name

+

Yes

+

String

+

Configuration name. The value is fromJobConfig for a source job, toJobConfig for a destination job, and linkConfig for a link.

+

id

+

No

+

Integer

+

Configuration ID

+

type

+

No

+

String

+

Configuration type

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 7 Input

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Parameter name

+

value

+

Yes

+

String

+

Parameter value

+

type

+

No

+

String

+

Value type

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 8 extended-configs

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

No

+

String

+

Name

+

value

+

No

+

String

+

Value

+
+
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + +
Table 9 Response body parameters

Parameter

+

Type

+

Description

+

validation-result

+

Array of JobValidationResult objects

+

Validation result. - If a job fails to be modified, the failure cause is returned. - If a job is successfully modified, an empty list is returned.

+
+
+ +
+ + + + + + + + + + + + + +
Table 10 JobValidationResult

Parameter

+

Type

+

Description

+

message

+

String

+

Error message

+

status

+

String

+

ERROR,WARNING

+

Enumeration values:

+
  • ERROR

    +
  • WARNING

    +
+
+
+

Status code: 400

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 11 Response body parameters

Parameter

+

Type

+

Description

+

code

+

String

+

Return code

+

errCode

+

String

+

Error code

+

message

+

String

+

Error message

+

externalMessage

+

String

+

Additional information

+
+
+
+

Example Requests

PUT /v1.1/1551c7f6c808414d8e9f3c514a170f2e/cluster/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/job/es_css
+
+{
+  "jobs" : [ {
+    "job_type" : "NORMAL_JOB",
+    "from-connector-name" : "elasticsearch-connector",
+    "to-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "toJobConfig.streamName",
+          "value" : "dis-lkGm"
+        }, {
+          "name" : "toJobConfig.separator",
+          "value" : "|"
+        }, {
+          "name" : "toJobConfig.columnList",
+          "value" : "1&2&3"
+        } ],
+        "name" : "toJobConfig"
+      } ]
+    },
+    "to-link-name" : "dis",
+    "driver-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "throttlingConfig.numExtractors",
+          "value" : "1"
+        }, {
+          "name" : "throttlingConfig.submitToCluster",
+          "value" : "false"
+        }, {
+          "name" : "throttlingConfig.numLoaders",
+          "value" : "1"
+        }, {
+          "name" : "throttlingConfig.recordDirtyData",
+          "value" : "false"
+        } ],
+        "name" : "throttlingConfig"
+      }, {
+        "inputs" : { },
+        "name" : "jarConfig"
+      }, {
+        "inputs" : [ {
+          "name" : "schedulerConfig.isSchedulerJob",
+          "value" : "false"
+        }, {
+          "name" : "schedulerConfig.disposableType",
+          "value" : "NONE"
+        } ],
+        "name" : "schedulerConfig"
+      }, {
+        "inputs" : { },
+        "name" : "transformConfig"
+      }, {
+        "inputs" : [ {
+          "name" : "retryJobConfig.retryJobType",
+          "value" : "NONE"
+        } ],
+        "name" : "retryJobConfig"
+      } ]
+    },
+    "from-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "fromJobConfig.index",
+          "value" : "52est"
+        }, {
+          "name" : "fromJobConfig.type",
+          "value" : "est_array"
+        }, {
+          "name" : "fromJobConfig.columnList",
+          "value" : "array_f1_int:long&array_f2_text:string&array_f3_object:nested"
+        }, {
+          "name" : "fromJobConfig.splitNestedField",
+          "value" : "false"
+        } ],
+        "name" : "fromJobConfig"
+      } ]
+    },
+    "to-connector-name" : "dis-connector",
+    "name" : "es_css",
+    "from-link-name" : "css"
+  } ]
+}
+
+

Example Responses

Status code: 200

+

ok

+
{
+  "validation-result" : [ { }, { }, { } ]
+}
+

Status code: 400

+

Error code

+
{
+  "code" : "Cdm.0095",
+  "errCode" : "Cdm.00095",
+  "message" : "A job with the name obs-obs does not exist.",
+  "externalMessage" : "A job with the name obs-obs does not exist."
+}
+
+

Status Codes

+
+ + + + + + + + + + +

Status Code

+

Description

+

200

+

ok

+

400

+

Error code

+
+
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/UpdateLink.html b/docs/dataartsstudio/api-ref/UpdateLink.html new file mode 100644 index 000000000..45f8fa4ba --- /dev/null +++ b/docs/dataartsstudio/api-ref/UpdateLink.html @@ -0,0 +1,569 @@ + + +

Modifying a Link

+

Function

This API is used to modify a link.

+
+

URI

PUT /v1.1/{project_id}/clusters/{cluster_id}/cdm/link/{link_name}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 1 Path Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

project_id

+

Yes

+

String

+

Project ID

+

cluster_id

+

Yes

+

String

+

Cluster ID

+

link_name

+

Yes

+

String

+

Link name

+
+
+
+

Request Parameters

+
+ + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+
+

Response Parameters

Status code: 200

+ +
+ + + + + + + + + + +
+ +
+ + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + +
+

Status code: 500

+ +
+ + + + + + + + + + + + + + +
+
+

Example Requests

PUT /v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/link/rdb_link
+
+{
+  "links" : [ {
+    "link-config-values" : {
+      "configs" : [ {
+        "inputs" : [ {
+          "name" : "linkConfig.databaseType",
+          "value" : "MYSQL"
+        }, {
+          "name" : "linkConfig.host",
+          "value" : "100.94.8.163"
+        }, {
+          "name" : "linkConfig.port",
+          "value" : "3306"
+        }, {
+          "name" : "linkConfig.database",
+          "value" : "DB_name"
+        }, {
+          "name" : "linkConfig.username",
+          "value" : "username"
+        }, {
+          "name" : "linkConfig.password",
+          "value" : "DB_password"
+        }, {
+          "name" : "linkConfig.fetchSize",
+          "value" : "100000"
+        }, {
+          "name" : "linkConfig.usingNative",
+          "value" : false
+        } ],
+        "name" : "linkConfig"
+      } ]
+    },
+    "name" : "mysql_link",
+    "creation-date" : 1496654788622,
+    "connector-name" : "generic-jdbc-connector",
+    "update-date" : 1496654788622,
+    "enabled" : true
+  } ]
+}
+
+

Example Responses

Status code: 200

+

OK

+
{
+  "name" : "rdb_link",
+  "validation-result" : { }
+}
+

Status code: 500

+

An internal service error occurred. For details, see error codes.

+
{
+  "validation-result" : [ {
+    "linkConfig" : [ {
+      "message" : "Can't connect to the database with given credentials: The authentication type 12 is not supported. Check that you have configured the pg_hba.conf file to include the client's IP address or subnet, and that it is using an authentication scheme supported by the driver.",
+      "status" : "ERROR"
+    } ]
+  } ]
+}
+
+

Status Codes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Error Codes

See Error Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0001.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0001.html new file mode 100644 index 000000000..f32b1f5fd --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0001.html @@ -0,0 +1,25 @@ + + +

Before You Start

+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0002.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0002.html new file mode 100644 index 000000000..96e72f078 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0002.html @@ -0,0 +1,13 @@ + + +

Overview

+

Welcome to DataArts Studio. DataArts Studio is a one-stop operations platform that provides data lifecycle management and intelligent data management for enterprises' digital operations. It provides functions such as DataArts Migration, DataArts Architecture, DataArts Factory, DataArts Quality, DataArts Catalog, and DataArts DataService. DataArts Studio supports intelligent construction of industrial knowledge libraries as well as data foundations such as big data storage and big data computing and analysis engines. DataArts Studio helps you quickly construct intelligent end-to-end data systems from data ingestion to data analysis. It helps eliminate data silos, unify standards, accelerate monetization, and generally assist with digital transformation.

+

This document describes how to use APIs to perform operations on DataArts Studio components, such as creating clusters and connections.

+

Before calling a DataArts Studio API, ensure that you have fully understood the concepts related to DataArts Studio. For details, see section "Service Overview" in DataArts Studio User Manual.

+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0003.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0003.html new file mode 100644 index 000000000..dce9de7fc --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0003.html @@ -0,0 +1,11 @@ + + +

API Calling

+

DataArts Studio supports Representational State Transfer (REST) APIs, allowing you to call APIs using HTTPS. For details on API calling, see Calling APIs.

+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0004.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0004.html new file mode 100644 index 000000000..ca1156621 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0004.html @@ -0,0 +1,13 @@ + + +

Endpoints

+

Obtaining an Endpoint

An endpoint is the request address for calling an API. Endpoints vary depending on services and regions.

+

You can obtain endpoints from Regions and Endpoints.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0005.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0005.html new file mode 100644 index 000000000..47619fcfc --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0005.html @@ -0,0 +1,12 @@ + + +

Constraints

+
  • The restrictions on DataArts Catalog APIs are as follows:
    • CDM jobs carry large volumes of data, which increases the database load. You are advised to periodically delete unused jobs.
    • If a large number of jobs are delivered in a short period, cluster resources may be exhausted.
    • CDM is a batch offline migration tool. You are advised not to create a large number of small jobs using CDM.
    +
  • For the constraints of other modules' APIs, see their API descriptions.
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0006.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0006.html new file mode 100644 index 000000000..66642422f --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0006.html @@ -0,0 +1,16 @@ + + +

Concepts

+
  • Domain

    A domain is created upon successful registration. The domain has full access permissions for all of its cloud services and resources. It can be used to reset user passwords and grant users permissions. The domain should not be used directly to perform routine management. For security purposes, create Identity and Access Management (IAM) users and grant them permissions for routine management.

    +
  • User

    A user is created in Identity and Access Management (IAM) to use cloud services. Each user has its own identity credentials (password and access keys).

    +

    You can view the account ID and user ID in Project ID and Account ID. The account name, username, and password will be required for API authentication.

    +
  • Project

    Projects group and isolate resources (including compute, storage, and network resources) across physical regions. A default project is provided for each region, and subprojects can be created under each default project. Users can be granted permissions to access all resources in a specific project. If you want more refined access control, create subprojects under a project and create resources in the subprojects. Then, grant users the permissions to access only specific resources in the subprojects.

    +
    Figure 1 Project isolating model
    +
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0007.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0007.html new file mode 100644 index 000000000..676a0e7eb --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0007.html @@ -0,0 +1,196 @@ + + +

API Overview

+

DataArts Studio provides self-developed APIs that comply with RESTful API design specifications. You can call those APIs to perform operations on DataArts Studio.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 DataArts Migration APIs

Type

+

API

+

Description

+

Maximum Number of Requests Made Per User Per Minute

+

Cluster Management

+

Creating a Cluster

+

Used to create a CDM cluster.

+

5

+

Querying the Cluster List

+

Used to query the list of CDM clusters.

+

120

+

Querying Cluster Details

+

Used to query the details of a CDM cluster.

+

120

+

Restarting a Cluster

+

Used to restart a CDM cluster.

+

20

+

Deleting a Cluster

+

Used to delete a CDM cluster.

+

20

+

Stopping a Cluster

+

Used to stop a CDM cluster.

+

20

+

Starting a Cluster

+

Used to start a CDM cluster.

+

20

+

Link Management

+

Creating a Link

+

Used to connect to a data source.

+

120

+

Querying a Link

+

Used to query the link list.

+

120

+

Modifying a Link

+

Used to modify the link configuration.

+

120

+

Deleting a Link

+

Used to delete a link.

+

120

+

Job Management

+

Creating a Job in a Specific Cluster

+

Used to create a data migration job in a specific CDM cluster. The job will not automatically start.

+

1200

+

Creating and Executing a Job in a Random Cluster

+

Used to select a random cluster in the running state from the specified clusters and create and execute a data migration job.

+

120

+

Querying a Job

+

Used to query the job list.

+

120

+

Modifying a Job

+

Used to modify the job configuration.

+

120

+

Starting a Job

+

Used to start a data migration job.

+

1200

+

Stopping a Job

+

Used to stop a running job.

+

1200

+

Querying Job Status

+

Used to query the running status of a job.

+

120

+

Querying Job Execution History

+

Used to query the historical status of job execution.

+

120

+

Deleting a job

+

Used to delete a job.

+

120

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 2 DataArts Factory APIs

Type

+

Description

+

Connection Management APIs

+

Used to create, edit, delete, import, and export data connections, query the data connection list, and query data connection details. For details, see DataArts Factory > Data Management > Creating a Data Connection in the User Guide.

+

Script Development APIs

+

Used to create, query, modify, delete, and execute scripts. For details, see DataArts Factory > Script Development in the User Guide.

+

Resource Management APIs

+

Used to create, query, and modify resources. For details, see DataArts Factory > Configuration and Management > Managing a Resource in the User Guide.

+

Job Development APIs

+

Used to create, edit, delete, import, and export jobs, query the job list, and query job details. For details, see DataArts Factory > Job Development in the User Guide.

+
+
+
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0008.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0008.html new file mode 100644 index 000000000..4bf35242c --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0008.html @@ -0,0 +1,15 @@ + + +

Calling APIs

+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0009.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0009.html new file mode 100644 index 000000000..9b9a5a834 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0009.html @@ -0,0 +1,247 @@ + + +

Making an API Request

+

This section describes the structure of a REST API, and uses the IAM API for obtaining a user token as an example to demonstrate how to call an API. The obtained token can then be used to authenticate the calling of other APIs.

+

Request URI

A request URI is in the following format:

+

{URI-scheme}://{Endpoint}/{resource-path}?{query-string}

+

Although a request URI is included in the request header, most programming languages or frameworks require the request URI to be transmitted separately.

+ +
+ + + + + + + + + + + + + + + + +
Table 1 URI parameter description

Parameter

+

Description

+

URI-scheme

+

Protocol used to transmit requests. All APIs use HTTPS.

+

Endpoint

+

Domain name or IP address of the server bearing the REST service endpoint. The endpoint varies between services in different regions.

+

An endpoint is the request address for calling an API. Endpoints vary depending on services and regions. You can obtain endpoints from Regions and Endpoints.

+

resource-path

+

Access path of an API for performing a specified operation. Obtain the value from the URI of an API. For example, the resource-path of the API used to obtain a user token is /v3/auth/tokens.

+

query-string

+

Query parameter, which is optional. Ensure that a question mark (?) is included before each query parameter that is in the format of "Parameter name=Parameter value", for example, ?limit=10, it indicates that a maximum of 10 data records are allowed.

+
+
+

To simplify the URI display in this document, each API is provided only with a resource-path and a request method. The URI-scheme value of all APIs is HTTPS, and the endpoints of all APIs in the same region are identical.

+
+
+

Request Method

The HTTP protocol defines the following request methods that can be used to send a request to the server: +
+ + + + + + + + + + + + + + + + + + + + + + +
Table 2 HTTP methods

Method

+

Description

+

GET

+

Requests the server to return specified resources.

+

PUT

+

Requests the server to update specified resources.

+

POST

+

Requests the server to add resources or perform special operations.

+

DELETE

+

Requests the server to delete specified resources, for example, an object.

+

HEAD

+

Same as GET except that the server must return only the response header.

+

PATCH

+

Requests the server to update partial content of a specified resource.

+

If the resource does not exist, a new resource will be created.

+
+
+
+

For example, in the case of the API used to obtain a user token, the request method is POST. The request is as follows:

+
POST https://{{endpoint}}/v3/auth/tokens
+
+

Request Header

You can also add additional header fields to a request, such as the fields required by a specified URI or HTTP method. For example, to request the authentication information, add Content-Type, which specifies the request body type.

+
Table 3 lists common request header fields. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Common request header fields

Field

+

Description

+

Mandatory

+

Example

+

Content-Type

+

Specifies the request body MIME type. This field is mandatory and its default value is application/json. Other values of this field will be provided for specific APIs if any.

+

Yes

+

The default value is application/json.

+

Content-Length

+

Specifies the length of the request body. The unit is byte.

+

No

+

3495

+

X-Language

+

Specifies the request language.

+

No

+

en_us

+

X-Project-Id

+

Specifies a project ID. Obtain the project ID by following the instructions in Project ID and Account ID.

+

No

+

e9993fc787d94b6c886cbaa340f9c0f4

+

X-Auth-Token

+

Specifies a user token.

+

The user token is a response to the API used to obtain a user token. This API is the only one that does not require authentication.

+

The token is the value of X-Subject-Token in the response header.

+

This field is mandatory for token authentication.

+

The following is part of an example token:

+

MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ

+

X-Sdk-Date

+

Time when the request is sent. The time is in YYYYMMDD'T'HHMMSS'Z' format.

+

The value is the current GMT time of the system.

+

This field is mandatory for AK/SK-based authentication.

+

20150907T101459Z

+

Host

+

Specifies the server domain name and port number of the resources being requested. The value can be obtained from the URL of the service API. The value is in the format of hostname[:port]. If the port number is not specified, the default port is used. The default port number for HTTPS is 443.

+

This field is mandatory for AK/SK-based authentication.

+

code.test.com

+

or

+

code.test.com:443

+

Authorization

+

Authentication information.

+

The value can be obtained from the request signing result.

+

This field is mandatory for AK/SK-based authentication.

+

SDK-HMAC-SHA256 Credential=QRUP2R3QFNAOVAWMYHZW/20160202/northchina/test/sdk_request, SignedHeaders=host;x-sdk-date, Signature=9d8b56b055c0e1f7a9498d881a7cb726be91b4f0cde1773b0b1557e987a480ce

+

workspace

+

Workspace ID. For details about how to obtain it, see DataArts Studio Instance ID and Workspace ID.

+
  • You do not need to set this field when calling a CDM API because in that case, only the default workspace can be used.
  • When a DataArts Factory API is called, data in the default workspace is queried by default. To query data in other workspaces, include this header in the query request.
+

d1cd7861478748a6925bc02f47c69279

+

X-Dlm-Type

+

DataArts DataService edition, which is Exclusive

+

This parameter is mandatory for calling DataArts DataService APIs.

+

EXCLUSIVE: exclusive edition

+
+
+
+

In addition to supporting token-based authentication, APIs also support authentication using access key ID/secret access key (AK/SK). During AK/SK-based authentication, an SDK is used to sign the request, and the Authorization (signature authentication) and X-Sdk-Date (time when the request is sent) header fields are automatically added to the request.

+

For more information, see "AK/SK-based Authentication" in Authentication.

+
+

The API used to obtain a user token does not require authentication. Therefore, only the Content-Type field needs to be added to requests for calling the API. An example of such requests is as follows:

+
POST https://{{endpoint}}/v3/auth/tokens
+Content-Type: application/json
+
+

Request Body

The body of a request is often sent in a structured format as specified in the Content-Type header field. The request body transfers content except the request header.

+

The request body varies between APIs. Some APIs do not require the request body, such as the APIs requested using the GET and DELETE methods.

+

In the case of the API used to obtain a user token, the request parameters and parameter description can be obtained from the API request. The following provides an example request with a body included. Replace username, domainname, ******** (login password), and xxxxxxxxxxxxxxxxxx (project ID) with the actual values. To learn how to obtain a project ID, see Project ID and Account ID.

+

The scope parameter specifies where a token takes effect. In the following example, the token takes effect only for the resources in a specified project.

+
+
+POST https://{{endpoint}}/v3/auth/tokens
+Content-Type: application/json
+
+{
+    "auth": {
+        "identity": {
+            "methods": [
+                "password"
+            ],
+            "password": {
+                "user": {
+                    "name": "username",
+                    "password": "********",
+                    "domain": {
+                        "name": "domainname"
+                    }
+                }
+            }
+        },
+        "scope": {
+            "project": {
+                "id": "xxxxxxxxxxxxxxxxxx"
+            }
+        }
+    }
+}
+

If all data required for the API request is available, you can send the request to call the API through curl, Postman, or coding. In the response to the API used to obtain a user token, x-subject-token is the desired user token. This token can then be used to authenticate the calling of other APIs.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0010.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0010.html new file mode 100644 index 000000000..1711cef7c --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0010.html @@ -0,0 +1,58 @@ + + +

Authentication

+
Requests for calling an API can be authenticated using either of the following methods:
  • Token-based authentication: Requests are authenticated using a token.
  • AK/SK-based authentication: Requests are authenticated by encrypting the request body using an AK/SK pair. AK/SK-based authentication is recommended because it is more secure than token-based authentication.
+
+

Token-based Authentication

The validity period of a token is 24 hours. When using a token for authentication, cache it to prevent frequently calling the IAM API used to obtain a user token.

+
+

A token specifies temporary permissions in a computer system. During API authentication using a token, the token is added to a request to get permissions for calling the API.

+

When calling the API to obtain a user token, you must set auth.scope in the request body to project.

+
{ 
+    "auth": { 
+        "identity": { 
+            "methods": [ 
+                "password" 
+            ], 
+            "password": { 
+                "user": { 
+                    "name": "username", 
+                    "password": "********", 
+                    "domain": { 
+                        "name": "domainname" 
+                    } 
+                } 
+            } 
+        }, 
+        "scope": { 
+            "project": { 
+                "id": "xxxxxxxxxxxxxxxxxx" 
+            } 
+        } 
+    } 
+}
+

After a token is obtained, the X-Auth-Token header field must be added to requests to specify the token when calling other APIs, for example, the API used to query a connection list. For example, if the token is ABCDEFJ...., X-Auth-Token: ABCDEFJ.... can be added to a request as follows:

+
+GET https://{{endpoint}}/v1/{project_id}/connections
+Content-Type: application/json
+X-Auth-Token: ABCDEFJ....
+
+

AK/SK-based Authentication

AK/SK-based authentication supports API requests with a body not larger than 12 MB. For API requests with a larger body, token-based authentication is recommended.

+
+

In AK/SK-based authentication, AK/SK is used to sign requests and the signature is then added to the requests for authentication.

+
  • AK: access key ID, which is a unique identifier used in conjunction with a secret access key to sign requests cryptographically.
  • SK: secret access key used in conjunction with an AK to sign requests cryptographically. It identifies a request sender and prevents the request from being modified.
+
To obtain an access key, perform the following steps:
  1. Log in to the management console, move the cursor to the username in the upper right corner, and select My Credentials from the drop-down list.
  2. On the My Credentials page, choose Access Keys, and click Create Access Key. See Figure 1.
    Figure 1 Clicking Create Access Key
    +
  3. Click OK and save the access key file as prompted. The access key file will be saved to your browser's configured download location. Open the credentials.csv file to view Access Key Id and Secret Access Key.
    • Only two access keys can be added for each user.
    • To ensure access key security, the access key is automatically downloaded only when it is generated for the first time and cannot be obtained from the management console later. Keep them properly.
    +
    +
+
+
In AK/SK-based authentication, you can use an AK/SK to sign requests based on the signature algorithm or use the signing SDK to sign requests. For details about how to sign requests and use the signing SDK, see API Request Signing Guide.

The signing SDKs are only used for signing requests and different from the SDKs provided by services.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0011.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0011.html new file mode 100644 index 000000000..97e94b1a0 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0011.html @@ -0,0 +1,39 @@ + + +

Response

+

Status Code

After sending a request, you will receive a response, including a status code, response header, and response body.

+

A status code is a group of digits, ranging from 1xx to 5xx. It indicates the status of a request. For more information, see Status Codes.

+

For example, if status code 201 is returned for calling the API used to obtain a user token, the request is successful.

+
+

Response Header

Similar to a request, a response also has a header, for example, Content-Type.

+

Figure 1 shows the response header fields for the API used to obtain a user token. The x-subject-token header field is the desired user token. This token can then be used to authenticate the calling of other APIs.

+
Figure 1 Header fields of the response to the request for obtaining a user token
+
+

(Optional) Response Body

The body of a response is often returned in structured format (such as JSON or XML) as specified in the Content-Type header field. The response body transfers content except the response header.

+
+

The following is part of the response body for the API used to obtain a user token. The following describes part of the request body.

+
{
+    "token": {
+        "expires_at": "2019-02-13T06:52:13.855000Z",
+        "methods": [
+            "password"
+        ],
+        "catalog": [
+            {
+                "endpoints": [
+                    {
+                        "region_id": "xxxxxx",
+...
+

If an error occurs during API calling, an error code and a message will be displayed. The following shows an error response body.

+
{
+    "error_msg": "The format of message is error",
+    "error_code": "AS.0001"
+}
+

In the response body, error_code is an error code, and error_msg provides information about the error.

+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0012.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0012.html new file mode 100644 index 000000000..af6a9059a --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0012.html @@ -0,0 +1,14 @@ + + +

Application Cases

+

+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0013.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0013.html new file mode 100644 index 000000000..5146f9892 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0013.html @@ -0,0 +1,489 @@ + + +

Application Example

+
This section describes how to use cURL to call CDM APIs to migrate data from a local MySQL database to DWS in the cloud.
  1. Obtaining a Token

    Call the API to obtain the user token, which will be put into the request header for authentication in a subsequent request.

    +
  2. Creating a CDM Cluster
    • If you have created a CDM cluster, skip this step and directly use the ID of the created cluster.
    • If you want to use a new cluster for migration, call the API in Creating a Cluster to create a CDM cluster.
    +
  3. Creating Links

    Call the API in Creating a Link to create the MySQL and DWS links.

    +
  4. Creating a Migration Job

    Call the API in Creating a Job in a Specified Cluster to create a job for migrating data from MySQL to DWS.

    +
  5. Viewing Job Result

    Call the API in Querying Job Execution History to execute the job.

    +
+
+

Preparing Data

Before calling an API, prepare the following data.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Preparing data

Item

+

Name

+

Description

+

Example

+

Account information

+

Project name

+

Name of the project where CDM resides

+

Project Name

+

Project ID

+

ID of the project where CDM resides

+

1551c7f6c808414d8e9f3c514a170f2e

+

Account name

+

Name of an enterprise account to which a user belongs

+

Account Name

+

Username

+

Username for using a cloud service. The user must have operation permissions on CDM.

+

Username

+

Password

+

User password

+

password

+

VPC information

+

VPC ID

+

The VPC where CDM resides must be the same as that of DWS.

+

6b47302a-bf79-4b20-bf7a-80987408e196

+

Subnet ID

+

The subnet where CDM resides must be the same as that of DWS.

+

63bdc3cb-a4e7-486f-82ee-d9bf208c8f8c

+

Security group ID

+

The security group where CDM resides must be the same as that of DWS.

+

005af77a-cce5-45ac-99c7-2ea50ea8addf

+

Endpoint

+

IAM endpoint

+

An endpoint is the request address for calling an API. Endpoints vary depending on services and regions. You can obtain endpoints from Regions and Endpoints.

+

iam_endpoint

+

CDM endpoint

+

cdm_endpoint

+

MySQL database

+

IP address

+

IP address of the local MySQL database, which allows CDM to access the MySQL database using a public IP address

+

1xx.120.85.24

+

Port

+

MySQL database port

+

3306

+

Database name

+

Name of the MySQL database from which data is to be exported

+

DB_name

+

Username

+

Username for accessing the MySQL database. The user must have the read, write, and delete permissions on the MySQL database.

+

username

+

Password

+

Password for accessing the MySQL database

+

DB_password

+

DWS database

+

IP address

+

IP address of the DWS database. CDM can access the IP address through the internal network.

+

10.120.85.24

+

Port

+

DWS database port

+

3306

+

Database name

+

Name of the DWS database to which data is written

+

DWS

+

Username

+

Username for accessing the DWS database. The user must have the read, write, and delete permissions on the DWS database.

+

user_dws

+

Password

+

Password for accessing the DWS database

+

dws_password

+
+
+
+

Obtaining a Token

  1. Before calling other APIs, obtain the token and set it as an environment variable.
    curl -H "Content-Type:application/json" https://{iam_endpoint}/v3/auth/tokens -X POST -d '
    +{
    +    "auth": {
    +        "identity": {
    +            "methods": [
    +                "password"
    +            ],
    +            "password": {
    +                "user": {
    +                    "name": "Username",
    +                    "password": "password",
    +                    "domain": {
    +                        "name": "Account Name"
    +                    }
    +                }
    +            }
    +        },
    +        "scope": {
    +            "project": {
    +                "id": "1551c7f6c808414d8e9f3c514a170f2e"
    +            }
    +        }
    +    }
    +}
    +' -v -k
    +

    The value of X-Subject-Token in the response header is the token.

    +
    X-Subject-Token:MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALBglghkgBZQMEAgEwgXXXXX...
    +
  2. Run the following command to set the token as an environment variable for future use:
    export X-Auth-Token = MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALBglghkgBZQMEAgEwgXXXXX...
    +
+
+

Creating a CDM Cluster

  1. Call the API in Creating a Cluster to create a cluster. The following values are examples:
    • Cluster name: cdm-ab82
    • Cluster flavor: cdm.medium
    • The VPC, subnet, and security group are the same as those of DWS, and the EIP is automatically bound.
    +

    If status code 200 is returned, the cluster is successfully created.

    +
    curl -X POST -H 'Content-Type:application/json;charset=utf-8' -H "X-Auth-Token:$Token" -d '
    +{
    +  "cluster": {
    +    "name": "cdm-ab82",
    +    "vpcId": "6b47302a-bf79-4b20-bf7a-80987408e196", 
    +    "instances": [{
    +            "flavorRef": "fb8fe666-6734-4b11-bc6c-43d11db3c745",
    +            "nics": [{
    +                "net-id": "63bdc3cb-a4e7-486f-82ee-d9bf208c8f8c",
    +                "securityGroupId": "005af77a-cce5-45ac-99c7-2ea50ea8addf"
    +            }],
    +            "availability_zone": "Project Name",
    +            "type": "cdm"
    +        }],
    +    "datastore": {
    +            "version": "1.8.5",
    +            "type": "cdm"
    +        },
    +    "isScheduleBootOff": false,
    +    "scheduleBootTime": "null",
    +    "scheduleOffTime": "null",
    +    "isAutoOff": false,
    +    "sys_tags": [{
    +            "key": "_sys_enterprise_project_id",
    +            "value": "1ce45885-4033-40d2-bdde-d4dbaceb387d"
    +        }]
    +    },
    +  "autoRemind": false,
    +  "phoneNum": "null",
    +  "email": "null"
    +}' 
    +https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters -v -k
    +
  2. Call the API in Querying Cluster Details to query cluster information, obtain the cluster ID, and set the cluster ID to a global variable.
    curl -X GET -H 'Content-Type:application/json;charset=utf-8' -H "X-Auth-Token:$Token" https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters -k -v
    +

    The response is as follows:

    +
    {
    +  "clusters": [{
    +    "version": "x.x.x",
    +    "updated": "2018-09-05T08:38:25",
    +    "name": "cdm-ab82",
    +    "created": "2018-09-05T08:38:25",
    +    "id": "bae65496-643e-47ca-84af-948672de7eeb",
    +    "status": "200",
    +    "isFrozen": "0",
    +    "statusDetail": "Normal",
    +    "actionProgress": {},
    +    "config_status": "In-Sync"
    +  }]
    +}
    +

    If the value of status is 200, the cluster is successfully created. The cluster ID is bae65496-643e-47ca-84af-948672de7eeb.

    +
  3. Run the following command to set the cluster ID to a global variable for future use:
    export ID = bae65496-643e-47ca-84af-948672de7eeb
    +
+
+

Creating Links

  1. Call the API in Creating a Link to create the MySQL link mysql_link. The following values are examples:
    • IP address: 1xx.120.85.24
    • Port number: 3306
    • Database name: DB_name
    • Login username: username
    • Password: DB_password
    +

    If status code 200 is returned, the link is successfully created.

    +
    curl -X POST -H "Content-Type:application/json" -H "X-Auth-Token:$Token" -d '{
    +  "links": [{
    +    "enabled": true,
    +    "update-user": null,
    +    "name": "mysql_link",
    +    "link-config-values": {
    +      "configs": [
    +                    {
    +                        "name": "linkConfig",
    +                        "inputs": [
    +                            {
    +                                "name": "linkConfig.databaseType",
    +                                "value": "MYSQL"
    +                            },
    +                            {
    +                                "name": "linkConfig.host",
    +                                "value": "1xx.120.85.24"
    +                            },
    +                            {
    +                                "name": "linkConfig.port",
    +                                "value": "3306"
    +                            },
    +                            {
    +                                "name": "linkConfig.database",
    +                                "value": "DB_name"
    +                            },
    +                            {
    +                                "name": "linkConfig.username",
    +                                "value": "username"
    +                            },
    +                            {
    +                                "name": "linkConfig.password",
    +                                "value": "DB_password"
    +                            },
    +                            {
    +                                "name": "linkConfig.fetchSize",
    +                                "value": "100000"
    +                            },
    +                            {
    +                                "name": "linkConfig.usingNative",
    +                                "value": "true"
    +                            }
    +                        ]
    +                    }
    +                ]
    +    },
    +    "connector-name": "generic-jdbc-connector",
    +    "creation-date": 1536654788622,
    +    "update-date": 1536654788622,
    +    "creation-user": null
    +  }]
    +}' 
    +https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb/cdm/link -k -v
    +
  2. Call the API in Creating a Link to create the DWS link dws_link. The following values are examples:
    • IP address of the database: 10.120.85.24
    • Port number: 3306
    • Database name: DWS
    • Login username: user_dws
    • Password: dws_password
    +
    curl -X POST -H "Content-Type:application/json" -H "X-Auth-Token:$Token" -d '{
    +  "links": [{
    +    "enabled": true,
    +    "update-user": null,
    +    "name": "dws_link",
    +    "link-config-values": {
    +      "configs": [
    +                    {
    +                        "name": "linkConfig",
    +                        "inputs": [
    +                            {
    +                                "name": "linkConfig.databaseType",
    +                                "value": "DWS"
    +                            },
    +                            {
    +                                "name": "linkConfig.host",
    +                                "value": "10.120.85.24"
    +                            },
    +                            {
    +                                "name": "linkConfig.port",
    +                                "value": "3306"
    +                            },
    +                            {
    +                                "name": "linkConfig.database",
    +                                "value": "DWS"
    +                            },
    +                            {
    +                                "name": "linkConfig.username",
    +                                "value": "user_dws"
    +                            },
    +                            {
    +                                "name": "linkConfig.password",
    +                                "value": "dws_password"
    +                            },
    +                            {
    +                                "name": "linkConfig.fetchSize",
    +                                "value": "100000"
    +                            },
    +                            {
    +                                "name": "linkConfig.usingNative",
    +                                "value": "true"
    +                            }
    +                        ]
    +                    }
    +                ]
    +    },
    +    "connector-name": "generic-jdbc-connector",
    +    "creation-date": 1536654788622,
    +    "update-date": 1536654788622,
    +    "creation-user": null
    +  }]
    +}' 
    +https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb/cdm/link -k -v
    +
+
+

Creating a Migration Job

  1. After the links are created, call the API in Creating a Job in a Specified Cluster to create a migration job. The following is a sample job:
    • The job name is mysql2dws.
    • The name of the MySQL database from which data is exported is default, and the name of the exported table is mysql_tbl. The job is split into multiple tasks by id and the tasks are executed concurrently.
    • The name of the database on DWS to which the data is imported is public, and the table name is cdm_all_type. Do not clear the data in the table before import.
    • If no table in the local MySQL database exists in the database on DWS, CDM automatically creates the table on DWS.
    • The field list loaded to DWS is id&gid&name.
    • When the job extracts data, three extractors are concurrently executed.
    +

    If status code 200 is returned, the job is successfully created.

    +
    curl -X POST -H "Content-Type:application/json" -H "X-Cluster-ID:$ID" -H "X-Auth-Token:$Token" -d '{
    +  "jobs": [{
    +    "job_type": "NORMAL_JOB",
    +    "name": "mysql2dws",
    +    "from-link-name": "mysql_link",
    +    "from-connector-name": "generic-jdbc-connector",
    +    "to-link-name": "dws_link",
    +    "to-connector-name": "generic-jdbc-connector",
    +    "from-config-values": {
    +      "configs": [{
    +        "name": "fromJobConfig",
    +        "inputs": [{
    +          "name": "fromJobConfig.schemaName",
    +          "value": "default"
    +        },
    +        {
    +          "name": "fromJobConfig.tableName",
    +          "value": "mysql_tbl"
    +        },
    +        {
    +          "name": "fromJobConfig.partitionColumn",
    +          "value": "id"
    +        }]
    +      }]
    +    },
    +"to-config-values": {
    +             "configs": [
    +                 {
    +                     "inputs": [
    +                         {
    +                             "name": "toJobConfig.schemaName",
    +                             "value": "public"
    +                         },
    +                         {
    +                             "name": "toJobConfig.tablePreparation",
    +                             "value": "CREATE_WHEN_NOT_EXIST"
    +                         },
    +                         {
    +                             "name": "toJobConfig.tableName",
    +                             "value": "cdm_all_type"
    +                         },
    +                         {
    +                             "name": "toJobConfig.columnList",
    +                             "value": "id&gid&name"
    +                         },
    +                         {
    +                             "name": "toJobConfig.shouldClearTable",
    +                             "value": "false"
    +                         }
    +                     ],
    +                     "name": "toJobConfig"
    +                 }
    +             ]
    +         },
    +    "driver-config-values": {
    +      "configs": [{
    +        "name": "throttlingConfig",
    +        "inputs": [{
    +          "name": "throttlingConfig.numExtractors",
    +          "value": "3"
    +        }]
    +      }]
    +    }
    +  }]
    +}' https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb/cdm/job -k -v
    +
  2. Call the API in Starting a Job to execute the job.
    curl -X GET -H 'Content-Type:application/json;charset=utf-8' -H "X-Cluster-ID:$ID" -H "X-Auth-Token:$Token" https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb/cdm/job/mysql2dws/start -k -v
    +

    The response is as follows:

    +
    {
    +  "submissions": [{
    +    "progress": 1,
    +    "job-name": "mysql2dws",
    +    "status": "BOOTING",
    +    "creation-date": 1536654788622,
    +    "creation-user": "cdm"
    +  }]
    +}
    +
+
+

Viewing Job Result

  1. Call the API in Querying Job Status to query the job status.
    curl -X GET -H 'Content-Type:application/json;charset=utf-8' -H "X-Cluster-ID:$ID" -H "X-Auth-Token:$Token" https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/job/mysql2dws/status -k -v
    +
  2. View the job execution result. The response to successful job execution is as follows:
    {
    +  "submissions": [{
    +    "progress": 0,
    +    "job-name": "mysql2dws",
    +    "status": "SUCCEEDED",
    +    "creation-date": 1536654788622,
    +    "creation-user": "cdm",
    +    "isStopingIncrement": "",
    +    "last-update-date": 1536654888622,
    +    "is-execute-auto": false,
    +    "last-udpate-user": "cdm",
    +    "isDeleteJob": false,
    +    "isIncrementing": false,
    +    "external-id": "job_local1127970451_0009",
    +    "counters": {
    +      "org.apache.sqoop.submission.counter.SqoopCounters": {
    +        "BYTES_WRITTEN": -1,
    +        "TOTAL_FILES": -1,
    +        "BYTES_READ": -1,
    +        "FILES_WRITTEN": -1,
    +        "TOTAL_SIZE": -1,
    +        "FILES_READ": -1,
    +        "ROWS_WRITTEN": 80,
    +        "ROWS_READ": 80
    +      }
    +    }
    +  }]
    +}
    +
    • BYTES_WRITTEN: number of written bytes
    • BYTES_READ: number of read bytes
    • TOTAL_FILES: total number of files
    • FILES_WRITTEN: number of written files
    • FILES_READ: number of read files
    • ROWS_WRITTEN: number of rows that are successfully written
    • ROWS_READ: number of rows that are successfully read
    +
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0015.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0015.html new file mode 100644 index 000000000..6781266c4 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0015.html @@ -0,0 +1,36 @@ + + +

Example of Using Data Development APIs

+

Scenarios

DataArts Studio helps enterprises quickly build an end-to-end intelligent data system that covers the entire process from data ingestion to data analytics. The system can eliminate data silos, unify data standards, accelerate data monetization, and promote digital transformation.

+

The following describes how to create a script by calling the Creating a Script API. For details, see Calling APIs.

+
+

Prerequisites

You have planned the region where Data Development is located and determined the endpoint for calling an API based on the region.

+

An endpoint is the request address for calling an API. Endpoints vary depending on services and regions. You can obtain endpoints from Regions and Endpoints.

+
+

Creating a Shell Script

The following is an example of creating a shell script:
{
+"name":"echoTimeShell",
+"type":"Shell",
+"content":"echo a",
+"connectionName":"con"
+}
+
+
  • name indicates a custom script name, for example, echoTimeShell.
  • type indicates the type of the script.
  • content indicates the script content.
  • connectionName indicates the name of the data connection associated with the script.
+
+

Creating a DLI SQL Script

You can also create a DLI SQL script. The following is an example:
{
+"name":"dlisql1",
+"type":"DLISQL",
+"content":"show tables",
+"connectionName":"dliCon1",
+"database":"testDatabase1",
+"queueName":"queue1"
+}
+
+
  • name indicates a custom script name, for example, dlisql1.
  • type indicates the type of the script.
  • content indicates the script content.
  • connectionName indicates the name of the data connection associated with the script.
  • database indicates the name of the associated database when the script is executed.
  • queueName indicates the name of the queue running on DLI when the SQL statement is executed.
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0016.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0016.html new file mode 100644 index 000000000..bcd0214a4 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0016.html @@ -0,0 +1,17 @@ + + +

DataArts Migration APIs

+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0049.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0049.html new file mode 100644 index 000000000..66c79604a --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0049.html @@ -0,0 +1,25 @@ + + +

Connection Management APIs

+
+
+ + + +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0050.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0050.html new file mode 100644 index 000000000..118cbc943 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0050.html @@ -0,0 +1,589 @@ + + +

Creating a Connection

+

Function

This API is used to create a connection. The supported connection types include DWS, DLI, Spark SQL, RDS, CloudTable, and Hive.

+
+

URI

  • URI format

    POST /v1/{project_id}/connections

    +
+
+
  • Parameter description +
    + + + + + + + + + + + +
    Table 1 URI parameter

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Connection parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Connection name. The name contains a maximum of 100 characters, including only letters, numbers, hyphens (-), and underscores (_). The connection name must be unique.

+

type

+

Yes

+

String

+

Connection type.

+
  • DWS
  • DLI
  • SparkSQL
  • HIVE
  • RDS
  • CloudTable
  • HOST
+

config

+

No

+

Map<String,String>

+

Connection configuration item. The configuration item varies with the connection type. You do not need to set the config parameter for DLI connections. For other types of connections, see the description of connection configuration items.

+

description

+

No

+

String

+

Description of the connection. The description contains a maximum of 255 characters.

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 DWS connection parameters

Parameter

+

Mandatory

+

Type

+

Description

+

clusterName

+

No

+

String

+

Name of a DWS cluster.

+

Perform the following operations to obtain the DWS cluster name:

+
  1. Log in to the management console.
  2. Click Data Warehouse Service and select Cluster Management from the list on the left.
+

You can obtain the cluster name from the cluster management list.

+

By default, this parameter is left blank.

+

ip

+

No

+

String

+

IP address for accessing the DWS cluster.

+

Perform the following operations to obtain the DWS access address:

+
  1. Log in to the management console.
  2. Click Data Warehouse Service and select Cluster Management from the list on the left.
  3. Click the cluster name. The basic information page of the cluster is displayed.
+

You can obtain the private network IP address on the Database Attribute tab page. If there are multiple IP addresses, select the first IP address.

+

By default, this parameter is left blank.

+

port

+

No

+

String

+

Port for accessing the DWS cluster.

+

Perform the following operations to obtain the DWS access port:

+
  1. Log in to the management console.
  2. Click Data Warehouse Service and select Cluster Management from the list on the left.
  3. Click the cluster name. The basic information page of the cluster is displayed.
+

You can obtain the port information on the Database Attribute tab page.

+

For example, set port to 8000. By default, this parameter is left blank.

+

userName

+

Yes

+

String

+

Username of the database. This username is the username entered during the creation of the DWS cluster.

+

password

+

Yes

+

String

+

Password for accessing the database. This password is the password entered during the creation of the DWS cluster.

+

sslEnable

+

Yes

+

boolean

+

Specifies whether to enable the SSL connection.

+

kmsKey

+

Yes

+

String

+

Name of a KMS key.

+

Perform the following operations to obtain the key:

+
  1. Log in to the management console.
  2. Click Key Management Service and select Key Management Service from the list on the left.
+

You can obtain the key name from the key list.

+

agentName

+

Yes

+

String

+

Name of a CDM cluster.

+

You can obtain the cluster name from the CDM cluster list on the DataArts Migration page of the DataArts Studio console.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 5 Spark SQL connection parameters

Parameter

+

Mandatory

+

Type

+

Description

+

clusterName

+

Yes

+

String

+

Name of an MRS cluster.

+

Perform the following operations to obtain the MRS cluster name:

+
  1. Log in to the management console.
  2. Click MapReduce Service and select Active Clusters from the list on the left.
+

You can obtain the cluster name from the active clusters, such as mrsCluster1.

+

connectionMethod

+

Yes

+

String

+

Method to connect.

+
  • agent: connected through an agent.
  • direct: connected directly.
+

userName

+

No

+

String

+

Username of the MRS cluster. This parameter is mandatory when connectionMethod is set to agent.

+

password

+

No

+

String

+

Password for accessing the MRS cluster. This parameter is mandatory when connectionMethod is set to agent.

+

agentName

+

No

+

String

+

Name of a CDM cluster. This parameter is mandatory when connectionMethod is set to agent.

+

You can obtain the cluster name from the CDM cluster list on the DataArts Migration page of the DataArts Studio console.

+

kmsKey

+

No

+

String

+

Name of a KMS key. This parameter is mandatory when connectionMethod is set to agent.

+

Perform the following operations to obtain the key:

+
  1. Log in to the management console.
  2. Click Key Management Service and select Key Management Service from the list on the left.
+

You can obtain the key name from the key list.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 6 Hive connection parameters

Parameter

+

Mandatory

+

Type

+

Description

+

clusterName

+

Yes

+

String

+

Name of an MRS cluster, for example, mrsCluster1.

+

connectionMethod

+

Yes

+

String

+

Method to connect.

+
  • agent: connected through an agent.
  • direct: connected directly.
+

userName

+

No

+

String

+

Username of the MRS cluster. This parameter is mandatory when connectionMethod is set to agent.

+

password

+

No

+

String

+

Password for accessing the MRS cluster. This parameter is mandatory when connectionMethod is set to agent.

+

agentName

+

No

+

String

+

Name of a CDM cluster. This parameter is mandatory when connectionMethod is set to agent.

+

You can obtain the cluster name from the CDM cluster list on the DataArts Migration page of the DataArts Studio console.

+

kmsKey

+

No

+

String

+

Name of a KMS key. This parameter is mandatory when connectionMethod is set to agent.

+

Perform the following operations to obtain the key:

+
  1. Log in to the management console.
  2. Click Key Management Service and select Key Management Service from the list on the left.
+

You can obtain the key name from the key list.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7 RDS connection parameters

Parameter

+

Mandatory

+

Type

+

Description

+

ip

+

Yes

+

String

+

Address for accessing RDS.

+

Perform the following operations to obtain the RDS access address:

+
  1. Log in to the management console.
  2. Click Relational Database Service and select Instance Management from the list on the left.
  3. Click the name of an instance. The basic information page of the instance is displayed.
+

You can obtain the IP address on the Connection Information tab.

+

port

+

Yes

+

String

+

Port for accessing RDS.

+

Perform the following operations to obtain the RDS access port:

+
  1. Log in to the management console.
  2. Click Relational Database Service and select Instance Management from the list on the left.
  3. Click the name of an instance. The basic information page of the instance is displayed.
+

You can obtain the database port on the Connection Information tab page.

+

userName

+

Yes

+

String

+

Username of the database. This username is the username entered during the creation of the cluster.

+

password

+

Yes

+

String

+

Password for accessing the database. This password is the password entered during the creation of the cluster.

+

kmsKey

+

Yes

+

String

+

Name of a KMS key.

+

Perform the following operations to obtain the key:

+
  1. Log in to the management console.
  2. Click Key Management Service and select Key Management Service from the list on the left.
+

You can obtain the key name from the key list.

+

agentName

+

Yes

+

String

+

Name of a CDM cluster.

+

You can obtain the cluster name from the CDM cluster list on the DataArts Migration page of the DataArts Studio console.

+

driverName

+

Yes

+

String

+

Name of the driver.

+
  • com.mysql.jdbc.Driver
  • org.postgresql.Driver
+

driverPath

+

Yes

+

String

+

Path of the driver on OBS.

+
+
+ +
+ + + + + + + + + + + +
Table 8 CloudTable connection parameters

Parameter

+

Mandatory

+

Type

+

Description

+

clusterName

+

Yes

+

String

+

Name of a CloudTable cluster.

+

Perform the following operations to obtain the cluster name:

+
  1. Log in to the management console.
  2. Click CloudTable Service and select Cluster Mode from the list on the left.
+

You can obtain the cluster name from the cluster list.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 9 HOST connection parameters

Parameter

+

Mandatory

+

Type

+

Description

+

ip

+

Yes

+

String

+

IP address of the host

+

port

+

Yes

+

String

+

SSH port number of the host

+

userName

+

Yes

+

String

+

Username for logging in to the host

+

password

+

Yes

+

String

+

Password for logging in to the host

+

agentName

+

Yes

+

String

+

Name of a CDM cluster.

+

You can obtain the cluster name from the CDM cluster list on the DataArts Migration page of the DataArts Studio console.

+

kmsKey

+

Yes

+

String

+

Name of a KMS key.

+

Perform the following operations to obtain the key:

+
  1. Log in to the management console.
  2. Click Key Management Service and select Key Management Service from the list on the left.
+

You can obtain the key name from the key list.

+
+
+

Response

None.

+
+

Example

Create a connection.

+
  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/connections
    +
    {
    +    "name":"connection1",
    +    "type":"DWS",
    +    "config":{
    +	    "clusterName":"test",
    +	    "userName":"dbadmin",
    +            "password":"*********",
    +	    "kmsKey":"cdm-dlf",		
    +	    "agentName":"cdm-donotdelete",		
    +	    "sslEnable":false
    +    }
    +}
    +
    +
+
+
  • Success response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6309",
    +    "error_msg":"The name already exists."
    +}
    +
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0051.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0051.html new file mode 100644 index 000000000..52ec1fda4 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0051.html @@ -0,0 +1,204 @@ + + +

Querying a Connection List

+

Function

This API is used to query a connection list.

+
+

URI

  • URI format

    GET /v1/{project_id}/connections?offset={offset}&limit={limit}&connectionName={connectionName}

    +
+
+
  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    offset

    +

    No

    +

    Integer

    +

    The value is no less than 0. The default value is 0.

    +

    limit

    +

    No

    +

    Integer

    +

    The maximum number of records on each page. Value range: 1 to 100

    +

    Default value: 10

    +

    connectionName

    +

    No

    +

    String

    +

    Name of a connection.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + +
Table 3 Response parameter

Parameter

+

Mandatory

+

Type

+

Description

+

total

+

Yes

+

Integer

+

The total number of connections.

+

connections

+

Yes

+

List<Connections>

+

Connection list.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 connections parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Connection name. The name contains a maximum of 100 characters, including only letters, numbers, hyphens (-), and underscores (_). The connection name must be unique.

+

type

+

Yes

+

String

+

Connection type.

+
  • DWS
  • DLI
  • SparkSQL
  • HIVE
  • RDS
  • CloudTable
  • HOST
+

config

+

No

+

Map<String,String>

+

Connection configuration item. The configuration item varies with the connection type. You do not need to set the config parameter for DLI connections. For other types of connections, see the description of connection configuration items.

+

description

+

No

+

String

+

Description of the connection. The description contains a maximum of 255 characters.

+
+
+
+

Example

Query a connection list.

+
  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/connections
    +
+
+
  • Success response

    HTTP status code 200

    +
    {
    +    "total":1,
    +    "connections":[
    +        {
    +            "name":"connection1",
    +            "type":"DWS",
    +            "config":{
    +                "clusterName":"test",
    +                "userName":"dbadmin",
    +                "password":"*********",
    +                "kmsKey":"cdm-dlf",
    +                "agentName":"cdm-donotdelete",
    +                "sslEnable":false
    +            }
    +        }
    +    ]
    +}
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.3051",
    +    "error_msg":"The request parameter is invalid."
    +}
    +
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0052.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0052.html new file mode 100644 index 000000000..7e085050a --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0052.html @@ -0,0 +1,150 @@ + + +

Viewing Connection Details

+

Function

This API is used to query configuration details of a specific connection.

+
+

URI

  • URI format

    GET /v1/{project_id}/connections/{connection_name}

    +
+
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    connection_name

    +

    Yes

    +

    String

    +

    Name of a connection.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Connection parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Connection name. The name contains a maximum of 100 characters, including only letters, numbers, hyphens (-), and underscores (_). The connection name must be unique.

+

type

+

Yes

+

String

+

Connection type.

+
  • DWS
  • DLI
  • SparkSQL
  • HIVE
  • RDS
  • CloudTable
  • HOST
+

config

+

No

+

Map<String,String>

+

Connection configuration item. The configuration item varies with the connection type. You do not need to set the config parameter for DLI connections. For other types of connections, see the description of connection configuration items.

+

description

+

No

+

String

+

Description of the connection. The description contains a maximum of 255 characters.

+
+
+
+

Example

Query connection details.

+
  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/connections/connection1
    +
+
+
  • Success response

    HTTP status code 200

    +
    {
    +    "name":"connection1",
    +    "type":"DWS",
    +    "config":{
    +	    "clusterName":"test",
    +	    "userName":"dbadmin",
    +            "password":"*********",
    +	    "kmsKey":"cdm-dlf",		
    +	    "agentName":"cdm-donotdelete",		
    +	    "sslEnable":false
    +    }
    +}
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6322",
    +    "error_msg":"The data connection does not exist."
    +}
    +
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0053.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0053.html new file mode 100644 index 000000000..7753b3c03 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0053.html @@ -0,0 +1,160 @@ + + +

Editing a Connection

+

Function

This API is used to edit a connection.

+
+

URI

  • URI format

    PUT /v1/{project_id}/connections/{connection_name}?ischeck=true

    +
+
+
  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    connection_name

    +

    Yes

    +

    String

    +

    Name of a connection.

    +

    ischeck

    +

    No

    +

    String

    +

    Indicates whether to perform check. The default value is No.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Connection parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Connection name. The name contains a maximum of 100 characters, including only letters, numbers, hyphens (-), and underscores (_). The connection name must be unique.

+

type

+

Yes

+

String

+

Connection type.

+
  • DWS
  • DLI
  • SparkSQL
  • HIVE
  • RDS
  • CloudTable
  • HOST
+

config

+

No

+

Map<String,String>

+

Connection configuration item. The configuration item varies with the connection type. You do not need to set the config parameter for DLI connections. For other types of connections, see the description of connection configuration items.

+

description

+

No

+

String

+

Description of the connection. The description contains a maximum of 255 characters.

+
+
+
+

Response

None.

+
+

Example

Modify a connection.

+
  • Request
    PUT /v1/b384b9e9ab9b4ee8994c8633aabc9505/connections/connection1?ischeck=true
    +{
    +    "name":"connection1",
    +    "type":"DWS",
    +    "config":{
    +	    "clusterName":"test",
    +	    "userName":"dbadmin",
    +            "password":"*********",
    +	    "kmsKey":"cdm-dlf",		
    +	    "agentName":"cdm-donotdelete",		
    +	    "sslEnable":false
    +    }
    +}
    +
+
+
  • Success response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6322",
    +    "error_msg":"The data connection does not exist."
    +}
    +
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0054.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0054.html new file mode 100644 index 000000000..6c21e9d9c --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0054.html @@ -0,0 +1,81 @@ + + +

Deleting a Connection

+

Function

This API is used to delete a connection.

+
+

URI

  • URI format

    DELETE /v1/{project_id}/connections/{connection_name}

    +
+
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    connection_name

    +

    Yes

    +

    String

    +

    Name of a connection.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

None.

+
+

Example

Delete the connection.

+
  • Request
    DELETE /v1/b384b9e9ab9b4ee8994c8633aabc9505/connections/connection1
    +
+
+
  • Success response

    HTTP status code 204

    +
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0055.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0055.html new file mode 100644 index 000000000..222fb540b --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0055.html @@ -0,0 +1,85 @@ + + +

Exporting a Connection

+

Function

This API is used to export all connection information that is compressed in ZIP format.

+
+

URI

  • URI format

    POST /v1/{project_id}/connections/export

    +
+
+
  • Parameter description +
    + + + + + + + + + + + +
    Table 1 URI parameter

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

The value of Content-Type in the response message is application/octet-stream that needs to be converted into a file. For details, see Parsing a Stream in a Response Message. Response messages are compressed as a file. The file name format is DLF_All_DataConnections.zip. The file directory is as follows:

+
connections
+├─{dwsConnection}.conn
+

+
+

Example

Export a connection.

+
  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/connections/export
    +
+
+
  • Success response

    HTTP status code 200

    +
    Response messages are compressed as a file. The file directory is as follows:
    +connections
    +├─{dwsConnection}.conn
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6322",
    +    "error_msg":"The data connection does not exist."
    +}
    +
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0056.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0056.html new file mode 100644 index 000000000..2b756167b --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0056.html @@ -0,0 +1,19 @@ + + +

Script Development APIs

+
+
+ + + +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0057.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0057.html new file mode 100644 index 000000000..4138d2edd --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0057.html @@ -0,0 +1,87 @@ + + +

Deleting a Script

+

Function

This API is used to delete a specific script.

+
+

URI

  • URI format

    DELETE /v1/{project_id}/scripts/{script_name}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    script_name

    +

    Yes

    +

    String

    +

    Script name.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

None.

+
+

Example

  • Request
    DELETE /v1/b384b9e9ab9b4ee8994c8633aabc9505/scripts/echoTime
    +
+
  • Success response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6201",
    +    "error_msg":"The script does not exist."
    +}
    +
+
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0058.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0058.html new file mode 100644 index 000000000..5e55e0ce3 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0058.html @@ -0,0 +1,142 @@ + + +

Executing a Script

+

Function

This API is used to execute a specific script, which can be a DWS SQL, DLI SQL, RDS SQL, Flink SQL, Hive SQL, Presto SQL, or Spark SQL script. A script instance is generated each time the script is executed. You can call the API Querying the Execution Result of a Script Instance to obtain script execution results.

+
+

URI

  • URI format

    POST /v1/{project_id}/scripts/{script_name}/execute

    +
+
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    script_name

    +

    Yes

    +

    String

    +

    Script name.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + +
Table 3 Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

params

+

No

+

Object

+

Script parameters of the Map<String,String> type. If a parameter is defined in the script, the parameter value is carried in the params. By default, this parameter is left blank.

+
+
+

Script parameters refer to the parameters in the script content, as shown in the following figure.

+

+
+

Response

+
+ + + + + + + + + + + +
Table 4 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

instanceId

+

Yes

+

String

+

ID of the instance that executes the script. You can obtain the execution result by using the instance ID in Querying the Execution Result of a Script Instance.

+
+
+
+

Example

  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/scripts/dws_sql/execute
    +
    {
    +"params":{"tableVar":"citys",
    +"time":"2019-07-25"}
    +}
    +
+
+
  • Success response

    HTTP status code 200

    +
    {
    +"instanceId": "a1ad-448a-9d56-4154193d49c5"
    +}
    +
+
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6201",
    +    "error_msg":"The script does not exist."
    +}
    +
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0059.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0059.html new file mode 100644 index 000000000..319e8cd45 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0059.html @@ -0,0 +1,96 @@ + + +

Stopping Executing a Script Instance

+

Function

This API is used to stop executing a script instance.

+
+

URI

  • URI format

    POST /v1/{project_id}/scripts/{script_name}/instances/{instance_id}/stop

    +
+
+
  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    script_name

    +

    Yes

    +

    String

    +

    Script name.

    +

    instance_id

    +

    Yes

    +

    String

    +

    ID of the script instance.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

None.

+
+

Example

  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/scripts/dwsscript/instances/a1ad-448a-9d56-4154193d49c5/stop
    +
+
+
  • Success response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6205",
    +    "error_msg":"The script running history does not exist."
    +}
    +
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0060.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0060.html new file mode 100644 index 000000000..bb0abcd85 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0060.html @@ -0,0 +1,15 @@ + + +

Resource Management APIs

+
+
+ + + +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0061.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0061.html new file mode 100644 index 000000000..2a66c4ac2 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0061.html @@ -0,0 +1,88 @@ + + +

Deleting a Resource

+

Function

This API is used to delete a resource.

+
+

URI

  • URI format

    DELETE /v1/{project_id}/resources/{resource_id}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    resource_id

    +

    Yes

    +

    String

    +

    Resource ID. For details about how to obtain the resource ID, see Querying a Resource List.

    +

    The returned ID is resource_id.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

None.

+
+

Example

  • Request
    DELETE /v1/b384b9e9ab9b4ee8994c8633aabc9505/resources/3624d1c3-5df5-4f20-9af9-98eadad6c5f9
    +
+
  • Success response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6241",
    +    "error_msg":"The resource information does not exist."
    +}
    +
+
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0062.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0062.html new file mode 100644 index 000000000..edb23be02 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0062.html @@ -0,0 +1,23 @@ + + +

Job Development APIs

+
+
+ + + +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0063.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0063.html new file mode 100644 index 000000000..06498ff77 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0063.html @@ -0,0 +1,213 @@ + + +

Viewing a Job File

+

Function

This API is used to check whether there are jobs and scripts in the job file to be imported from OBS to DLF.

+
+

URI

  • URI format

    POST /v1/{project_id}/jobs/check-file

    +
+
  • Parameter description +
    + + + + + + + + + + + +
    Table 1 URI parameter

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

path

+

No

+

String

+

If OBS is deployed, the job definition file is stored on OBS, for example, obs://myBucket/jobs.zip.

+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

jobs

+

No

+

List<Job>

+

Job information. For details, see Table 4.

+

scripts

+

No

+

List<Script>

+

Script information. For details, see Table 5.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 4 job data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

params

+

No

+

Map<String,String>

+

Job parameter.

+

name

+

Yes

+

String

+

Job name.

+

path

+

Yes

+

String

+

Path of the job.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 5 Data structure description of Script

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Script name.

+

path

+

Yes

+

String

+

Path of the script.

+
+
+
+

Example

View the parameter definitions in the job file on OBS.

+
  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/check-file
    +{
    +"path": "obs://aaaaa/DLF_myJob.zip"
    +}
    +
+
  • Success response
    {
    +    "jobs":[
    +        {
    +            "name":"test",
    +            "path":"/test",
    +            "params":{
    +                "ddd":"dddd"
    +            }
    +        },
    +        {
    +            "name":"test1",
    +            "path":"/test",
    +            "params":{
    +                "ddd":"dddd"
    +            }
    +        }
    +    ],
    +    "scripts":[
    +        {
    +            "name":"script1",
    +            "path":"/path1"
    +        },
    +        {
    +            "name":"script2",
    +            "path":"/path1"
    +        }
    +    ]
    +}
    +
+
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0815",
    +    "error_msg":"Fail to read OBS file."
    +}
    +
+
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0064.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0064.html new file mode 100644 index 000000000..e01852a91 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0064.html @@ -0,0 +1,86 @@ + + +

Stopping a Job

+

Function

This API is used to stop a job.

+
+

URI

  • URI format

    POST /v1/{project_id}/jobs/{job_name}/stop

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    job_name

    +

    Yes

    +

    String

    +

    Job name.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

None.

+
+

Example

Stops job myJob.

+
  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/myJob/stop
    +
+
  • Success response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0100",
    +    "error_msg":"The job does not exists."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0065.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0065.html new file mode 100644 index 000000000..83c43ad3a --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0065.html @@ -0,0 +1,87 @@ + + +

Deleting a Job

+

Function

This API is used to delete a job.

+
+

URI

  • URI format

    DELETE /v1/{project_id}/jobs/{job_name}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    job_name

    +

    Yes

    +

    String

    +

    Job name.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

None.

+
+

Example

  • Request
    DELETE /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/joba
    +
+
  • Response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0100",
    +    "error_msg":"The job does not exists."
    +}
    +
+
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0066.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0066.html new file mode 100644 index 000000000..bf6f20ff3 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0066.html @@ -0,0 +1,95 @@ + + +

Stopping a Job Instance

+

Function

This API is used to stop a specific job instance. A job instance can be stopped only when it is in the running state.

+
+

URI

  • URI format

    POST /v1/{project_id}/jobs/{job_name}/instances/{instance_id}/stop

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    job_name

    +

    Yes

    +

    String

    +

    Job name.

    +

    instance_id

    +

    Yes

    +

    Long

    +

    Job instance ID. For details about how to obtain it, see Viewing a Job Instance List.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

None.

+
+

Example

  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/job_batch/instances/34765/stop
    +
+
  • Success response

    HTTP status code 204

    +
    • Failure response

      HTTP status code 400

      +
      {
      +    "error_code":"DLF.0137",
      +    "error_msg":"Job instance does not exist."
      +}
      +
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0067.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0067.html new file mode 100644 index 000000000..6b9761524 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0067.html @@ -0,0 +1,95 @@ + + +

Restarting a Job Instance

+

Function

This API is used to restart a specific job instance. A job instance can be restarted only when it is in the successful, failed, or canceled state.

+
+

URI

  • URI format

    POST /v1/{project_id}/jobs/{job_name}/instances/{instance_id}/restart

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    job_name

    +

    Yes

    +

    String

    +

    Job name.

    +

    instance_id

    +

    Yes

    +

    Long

    +

    Job instance ID. For details about how to obtain it, see Viewing a Job Instance List.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

None.

+
+

Example

  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/job_batch/instances/34765/restart
    +
+
  • Response

    HTTP status code 204

    +
    • Failure response

      HTTP status code 400

      +
      {
      +    "error_code":"DLF.0137",
      +    "error_msg":"Job instance does not exist."
      +}
      +
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0082.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0082.html new file mode 100644 index 000000000..dd3302eb5 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0082.html @@ -0,0 +1,127 @@ + + +

Data Structure

+

Table 1 describes common request headers.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Common request header fields

Parameter

+

Mandatory

+

Type

+

Description

+

X-Sdk-Date

+

Yes

+

String

+

Time when the request is sent. The time is in YYYYMMDD'T'HHMMSS'Z' format.

+

The value is the current GMT time of the system.

+

Authorization

+

Yes

+

String

+

Authentication information.

+

The value can be obtained from the request signing result.

+

For details, see AK/SK-based Authentication.

+

Host

+

Yes

+

String

+

Server information of the resource being requested. The value can be obtained from the URL of the service API. The value is in the format of hostname:port. If the port number is not specified, the default port is used. The default port number for HTTPS is 443.

+

Content-type

+

Yes

+

String

+

Request body MIME type.

+

Content-Length

+

No

+

Int

+

Size of the request body, measured in bytes.

+

Mandatory for POST and PUT requests, but must be left blank for GET requests.

+

X-Project-Id

+

No

+

String

+

Project ID used to obtain a token for each project.

+

X-Auth-Token

+

No

+

String

+

User token.

+

This parameter is mandatory for authentication using tokens.

+
+
+

Table 2 describes common response headers.

+ +
+ + + + + + + + + + + + + + + + + +
Table 2 Common response headers

Parameter

+

Type

+

Description

+

Content-Length

+

Int

+

Length of the response body. The unit is byte.

+

Date

+

String

+

Time when a response is returned.

+

Content-type

+

String

+

Request body MIME type.

+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0083.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0083.html new file mode 100644 index 000000000..2a3665ef6 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0083.html @@ -0,0 +1,63 @@ + + + +

APIs to Be Taken Offline

+ +

+
+ +
+ + + +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0084.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0084.html new file mode 100644 index 000000000..19c0edd6b --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0084.html @@ -0,0 +1,1436 @@ + + +

Creating a Job

+

Function

This API is used to create a job. A job consists of one or more nodes, such as Hive SQL and CDM Job nodes. DLF supports two types of jobs: batch jobs and real-time jobs.

+
+

URI

  • URI format

    POST /v1/{project_id}/jobs

    +
+
  • Parameter description +
    + + + + + + + + + + + +
    Table 1 URI parameter

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Job name. The name contains a maximum of 128 characters, including only letters, numbers, hyphens (-), underscores (_), and periods (.). The job name must be unique.

+

nodes

+

Yes

+

List<Node>

+

Node definition. For details, see Table 4.

+

schedule

+

Yes

+

Schedule data structure

+

Scheduling configuration. For details, see Table 5.

+

params

+

No

+

List<Param>

+

Job parameter definition. For details, see Table 6.

+

directory

+

No

+

String

+

Directory for saving the job. The value must be an existing directory, for example, /dir/a/. The default value is the root directory.

+

processType

+

Yes

+

String

+

Job type.

+
  • REAL_TIME: real-time processing
  • BATCH: batch processing
+

basicConfig

+

No

+

BasicConfig data structure

+

Basic job information. For details, see Table 26.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Node data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Node name. The name contains a maximum of 128 characters, including only letters, numbers, hyphens (-), underscores (_), and periods (.). Names of the nodes in a job must be unique.

+

type

+

Yes

+

String

+

Node type. The options are as follows:

+
  • Hive SQL: Runs Hive SQL scripts.
  • Spark SQL: Runs Spark SQL scripts.
  • DWS SQL: Runs DWS SQL scripts.
  • DLISQL: Runs DLI SQL scripts.
  • Shell: Runs shell SQL scripts.
  • CDM Job: Runs CDM jobs.
  • CloudTable Manager: Manages CloudTable tables, including creating and deleting tables.
  • OBS Manager: Manages OBS paths, including creating and deleting paths.
  • RESTAPI: Sends REST API requests.
  • SMN: Sends short messages or emails.
  • MRS Spark: Runs Spark jobs of MRS.
  • MapReduce: Runs MapReduce jobs of MRS.
  • DLI Spark: Runs Spark jobs of DLF.
  • RDS SQL: Transfers SQL statements to RDS for execution.
+

location

+

Yes

+

Location data structure

+

Location of a node on the job canvas. For details, see Table 7.

+

preNodeName

+

No

+

List<String>

+

Name of the previous node on which the current node depends.

+

conditions

+

No

+

List<Condition>

+

Node execution condition. Whether the node is executed or not depends on the calculation result of the EL expression saved in the expression field of condition. For details, see Table 8.

+

properties

+

Yes

+

List

+

Node property. Each type of node has its own property definition.

+ +

pollingInterval

+

No

+

Int

+

Interval at which node running results are checked.

+

Unit: second; value range: 1 to 60

+

Default value: 10

+

maxExecutionTime

+

No

+

Int

+

Maximum execution time of a node. If a node is not executed within the maximum execution time, the node is set to the failed state.

+

Unit: minute; value range: 5 to 1440

+

Default value: 60

+

retryTimes

+

No

+

Int

+

Number of the node retries. The value ranges from 0 to 5. 0 indicates no retry.

+

Default value: 0

+

retryInterval

+

No

+

Int

+

Interval at which a retry is performed upon a failure. The value ranges from 5 to 120.

+

Unit: second

+

Default value: 120

+

failPolicy

+

No

+

String

+

Node failure policy.

+
  • FAIL: Terminate the execution of the current job.
  • IGNORE: Continue to execute the next node.
  • SUSPEND: Suspend the execution of the current job.
  • FAIL_CHILD: Terminate the execution of the subsequent node.

    The default value is FAIL.

    +
+

eventTrigger

+

No

+

Event data structure

+

Node event triggering configuration. For details, see Table 10.

+

cronTrigger

+

No

+

Cron data structure

+

Node Cron triggering configuration. For details, see Table 9.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 5 Schedule data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

type

+

Yes

+

String

+

Scheduling type.

+
  • EXECUTE_ONCE: The job runs immediately and runs only once.
  • CRON: The job runs periodically.
  • EVENT: The job is triggered by events.
+

cron

+

No

+

Data structure

+

When type is set to CRON, configure the scheduling frequency and start time. For details, see Table 9.

+

event

+

No

+

Data structure

+

When type is set to EVENT, configure information such as the event source. For details, see Table 10.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 6 Param data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Name of a parameter. The name contains a maximum of 64 characters, including only letters, numbers, hyphens (-), and underscores (_).

+

value

+

Yes

+

String

+

Value of the parameter. It cannot exceed 1024 characters.

+

type

+

No

+

String

+

Parameter type.

+
  • variable
  • constants

    Default value: variable

    +
+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 7 Location data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

x

+

Yes

+

Int

+

Position of the node on the horizontal axis of the job canvas.

+

y

+

Yes

+

Int

+

Position of the node on the vertical axis of the job canvas.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 8 condition data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

preNodeName

+

Yes

+

String

+

Name of the previous node on which the current node depends.

+

expression

+

Yes

+

String

+

EL expression. If the calculation result of the EL expression is true, this node is executed.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 9 Cron data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

startTime

+

Yes

+

String

+

Scheduling start time in the format of yyyy-MM-dd'T'HH:mm:ssZ, which is an ISO 8601 time format. For example, 2018-10-22T23:59:59+08, which indicates that a job starts to be scheduled at 23:59:59 on October 22nd, 2018.

+

endTime

+

No

+

String

+

Scheduling end time in the format of yyyy-MM-dd'T'HH:mm:ssZ, which is an ISO 8601 time format. For example, 2018-10-22T23:59:59+08, which indicates that a job stops to be scheduled at 23:59:59 on October 22nd, 2018. If the end time is not set, the job will continuously be executed based on the scheduling period.

+

expression

+

Yes

+

String

+

Cron expression in the format of <second><minute><hour><day><month><week>. For details about the value input in each field, see Table 11.

+

expressionTimeZone

+

No

+

String

+

Time zone corresponding to the Cron expression, for example, GMT+8.

+

Default value: time zone where DataArts Studio is located

+

dependPrePeriod

+

No

+

Boolean

+

Indicates whether to depend on the execution result of the current job's dependent job in the previous scheduling period.

+

Default value: false

+

dependJobs

+

No

+

DependJobs data structure

+

Job dependency configuration. For details, see Table 12.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 10 Event data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

failPolicy

+

No

+

String

+

Job failure policy.

+
  • SUSPEND: Suspend the event.
  • IGNORE: Ignore the failure and process with the next event.
+

Default value: SUSPEND

+

concurrent

+

No

+

int

+

Number of the concurrently scheduled jobs.

+

Value range: 1 to 128

+

Default value: 1

+

readPolicy

+

No

+

String

+

Access policy.

+
  • LAST: Access data from the last location.
  • NEW: Access data from a new location.
+

Default value: LAST

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 11 Values in the Cron expression fields

Field

+

Value Range

+

Allowed Special Character

+

Description

+

Second

+

0-59

+

, - * /

+

In the current version, only 0 is allowed.

+

Minute

+

0-59

+

, - * /

+

-

+

Hour

+

0-23

+

, - * /

+

-

+

Day

+

1-31

+

, - * ? / L W C

+

-

+

Month

+

1-12

+

, - * /

+

In the current version, only * is allowed.

+

Week

+

1-7

+

, - * ? / L C #

+

Starting from Sunday.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 12 DependJobs data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

jobs

+

Yes

+

List<String>

+

A list of dependent jobs. Only the existing jobs can be depended on.

+

dependPeriod

+

No

+

String

+

Dependency period.

+
  • SAME_PERIOD: To run a job or not depends on the execution result of its depended job in the current scheduling period.
  • PRE_PERIOD: To run a job or not depends on the execution result of its depended job in the previous scheduling period.
+

Default value: SAME_PERIOD

+

dependFailPolicy

+

No

+

String

+

Dependency job failure policy.

+
  • FAIL: Stop the job and set the job to the failed state.
  • IGNORE: Continue to run the job.
  • SUSPEND: Suspend the job.
+

Default value: FAIL

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 13 Parameters of the Hive SQL node

Parameter

+

Mandatory

+

Type

+

Description

+

scriptName

+

Yes

+

String

+

Script name.

+

database

+

No

+

String

+

Database name.

+

Database in the MRS Hive. The default value is default.

+

connectionName

+

No

+

String

+

Name of a connection.

+

scriptArgs

+

No

+

String

+

Script parameter in format of key and value. Multiple parameters are separated by newlines (\n), for example, key1=value1\nkey2=value2.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 14 Parameters of the Spark SQL node

Parameter

+

Mandatory

+

Type

+

Description

+

scriptName

+

Yes

+

String

+

Script name.

+

database

+

No

+

String

+

Database name.

+

Database in the MRS Spark SQL. The default value is default.

+

connectionName

+

No

+

String

+

Name of a connection.

+

scriptArgs

+

No

+

String

+

Script parameter in format of key and value. Multiple parameters are separated by newlines (\n), for example, key1=value1\nkey2=value2.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 15 Parameters of the DWS SQL node

Parameter

+

Mandatory

+

Type

+

Description

+

scriptName

+

Yes

+

String

+

Script name.

+

database

+

No

+

String

+

Database name.

+

Database in DWS. The default value is postgres.

+

connectionName

+

No

+

String

+

Name of a connection.

+

scriptArgs

+

No

+

String

+

Script parameter in format of key and value. Multiple parameters are separated by newlines (\n), for example, key1=value1\nkey2=value2.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 16 Parameters of the DLI SQL node

Parameter

+

Mandatory

+

Type

+

Description

+

scriptName

+

Yes

+

String

+

Script name.

+

database

+

No

+

String

+

Database name.

+

Database in DLI.

+

connectionName

+

No

+

String

+

Name of a connection.

+

scriptArgs

+

No

+

String

+

Script parameter in format of key and value. Multiple parameters are separated by newlines (\n), for example, key1=value1\nkey2=value2.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 17 Parameters of the shell node

Parameter

+

Mandatory

+

Type

+

Description

+

scriptName

+

Yes

+

String

+

Script name.

+

connectionName

+

Yes

+

String

+

Name of a connection.

+

arguments

+

No

+

String

+

Shell script parameter.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 18 Parameters of the CDM Job node

Parameter

+

Mandatory

+

Type

+

Description

+

clusterName

+

Yes

+

String

+

Cluster name.

+

You can obtain the cluster name from the CDM cluster list on the DataArts Migration page of the DataArts Studio console.

+

jobName

+

Yes

+

String

+

Job name.

+

To obtain the job name, access the DataArts Studio console, choose DataArts Migration, click a cluster name on the Cluster Management page, and click Job Management on the displayed page.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 19 Parameters of the CloudTableManager node

Parameter

+

Mandatory

+

Type

+

Description

+

namespace

+

No

+

String

+

Namespace.

+

Default value: default

+

action

+

Yes

+

String

+

Action type.

+
  • CREATE_TABLE: Create a table.
  • DELETE_TABLE: Delete a table.
+

table

+

No

+

String

+

Table name.

+

columnFamily

+

No

+

String

+

Column family.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 20 Parameters of the OBSManager node

Parameter

+

Mandatory

+

Type

+

Description

+

action

+

Yes

+

String

+

Action type.

+
  • CREATE_PATH: Create an OBS path.
  • DELETE_PATH: Delete an OBS path.
+

path

+

Yes

+

String

+

OBS path.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 21 Parameters of the RESTAPI node

Parameter

+

Mandatory

+

Type

+

Description

+

url

+

Yes

+

String

+

URL address.

+

URL of the cloud service.

+

method

+

Yes

+

String

+

HTTP method.

+
  • GET
  • POST
  • PUT
  • DELETE
+

headers

+

No

+

String

+

HTTP message header in the format of <message header name>=<value>. Multiple message headers are separated by newlines.

+

body

+

No

+

String

+

Message body.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 22 Parameters of the SMN node

Parameter

+

Mandatory

+

Type

+

Description

+

topic

+

Yes

+

String

+

SMN topic URN.

+

Perform the following operations to obtain an SMN topic URN:

+
  1. Log in to the management console.
  2. Click Simple Message Notification and choose Topic Management > Topics from the list on the left.
+

You can obtain the SMN topic URN in the topic list.

+

subject

+

Yes

+

String

+

Message title, which is used as the subject of an email sent to a subscriber.

+

messageType

+

Yes

+

String

+

Message type.

+
  • NORMAL
  • STRUCTURE
  • TEMPLATE
+

message

+

Yes

+

String

+

Message to be sent.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 23 Parameters of the MRS Spark node

Parameter

+

Mandatory

+

Type

+

Description

+

clusterName

+

Yes

+

String

+

MRS cluster name.

+

Perform the following operations to obtain the MRS cluster name:

+
  1. Log in to the management console.
  2. Click MapReduce Service and choose Clusters > Active Clusters from the left navigation pane.
+

You can obtain the cluster name from the active clusters.

+

jobName

+

Yes

+

String

+

MRS job name.

+

The job name is user-defined.

+

resourcePath

+

Yes

+

String

+

OBS resource path of the custom Spark JAR package

+

parameters

+

Yes

+

String

+

Custom parameters of the Spark JAR package

+

You can specify parameters for a custom JAR package.

+

input

+

No

+

String

+

Input path.

+

Input data path of the MRS Spark job. The path can be an HDFS or OBS path.

+

output

+

No

+

String

+

Output path.

+

Output data path of the MRS Spark job. The path can be an HDFS or OBS path.

+

programParameter

+

No

+

String

+

Program parameter

+

Multiple key-value pairs are allowed and separated by vertical bars (|).

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 24 Parameters of the MapReduce node

Parameter

+

Mandatory

+

Type

+

Description

+

clusterName

+

Yes

+

String

+

MRS cluster name.

+

Perform the following operations to obtain the MRS cluster name:

+
  1. Log in to the management console.
  2. Click MapReduce Service and choose Clusters > Active Clusters from the left navigation pane.
+

You can obtain the cluster name from the active clusters.

+

jobName

+

Yes

+

String

+

MRS job name.

+

The job name is user-defined.

+

resourcePath

+

Yes

+

String

+

Resource path.

+

parameters

+

Yes

+

String

+

Job parameter.

+

input

+

Yes

+

String

+

Input path.

+

Input data path of the MapReduce job. The path can be an HDFS or OBS path.

+

output

+

Yes

+

String

+

Output path.

+

Output data path of the MapReduce job. The path can be an HDFS or OBS path.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 25 Parameters of the DLI Spark node

Parameter

+

Mandatory

+

Type

+

Description

+

clusterName

+

Yes

+

String

+

DLI queue name

+

Perform the following operations to obtain the DLI queue name:

+
  1. Log in to the management console.
  2. Click Data Lake Insight and then Queue Management.
+

You can obtain the queue name from the queue management list.

+

jobName

+

Yes

+

String

+

DLI job name.

+

Perform the following operations to obtain the job name:

+
  1. Log in to the management console.
  2. Click Data Lake Insight and then Spark Jobs.
  3. Choose Job Management.
+

You can obtain the job name from the job management list.

+

resourceType

+

No

+

String

+

Resource type of the DLI job. CUSTOMIZED is returned when the parameter is customized.

+

jobClass

+

No

+

String

+

Main class name. When the application type is .jar, the main class name cannot be empty.

+

resourcePath

+

Yes

+

String

+

JAR package resource path.

+

jarArgs

+

No

+

String

+

Main-class entry parameter.

+

sparkConfig

+

No

+

String

+

Running parameter of the Spark job.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 26 BasicConfig job information

Parameter

+

Mandatory

+

Type

+

Description

+

owner

+

No

+

String

+

Job owner. The length cannot exceed 128 characters.

+

priority

+

No

+

int

+

Job priority. The value ranges from 0 to 2. The default value is 0. 0 indicates a top priority, 1 indicates a medium priority, and 2 indicates a low priority.

+

executeUser

+

No

+

String

+

Job execution user. The value must be an existing username.

+

instanceTimeout

+

No

+

int

+

Instance timeout interval. The unit is minute. The value ranges from 5 to 1440. The default value is 60.

+

customFields

+

No

+

Map<String,String>

+

User-defined field. The length cannot exceed 2048 characters.

+
+
+
+

Response

None.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0085.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0085.html new file mode 100644 index 000000000..f2ec56531 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0085.html @@ -0,0 +1,199 @@ + + +

Editing a Job

+

Function

This API is used to edit a job.

+
+

URI

  • URI format

    PUT /v1/{project_id}/jobs/{job_name}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    job_name

    +

    Yes

    +

    String

    +

    Job name.

    +
    +
    +
+
+

Request

See Request.

+
+

Example

Modify the properties of job dliJob1.

+
  • Request
    PUT /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/dliJob1
    +{
    +	"logPath":"obs://dlf-log-b384b9e9ab9b4ee8994c8633aabc9505",
    +	"name":"dliJob1",
    +	"nodes":[
    +		{
    +			"failPolicy":"FAIL",
    +			"location":{
    +				"x":"385.0",
    +				"y":"150.0"
    +			},
    +			"maxExecutionTime":60,
    +			"name":"DIS_INPUT",
    +			"pollingInterval":1,
    +			"preNodeName":[],
    +			"properties":[
    +				{
    +					"name":"streamName",
    +					"value":"csinput"
    +				}
    +			],
    +			"resources":[],
    +			"retryInterval":120,
    +			"retryTimes":0,
    +			"type":"DISStream"
    +		},
    +		{
    +			"failPolicy":"FAIL",
    +			"location":{
    +				"x":"572.0",
    +				"y":"151.0"
    +			},
    +			"maxExecutionTime":60,
    +			"name":"CS_PROCESS",
    +			"pollingInterval":10,
    +			"preNodeName":[
    +				"DIS_INPUT"
    +			],
    +			"properties":[
    +				{
    +					"name":"scriptName",
    +					"value":"CS_PROCESS_TRIP"
    +				},
    +				{
    +					"name":"jobName",
    +					"value":"CS_PROCESS"
    +				},
    +				{
    +					"name":"jobType",
    +					"value":"flink_sql_job"
    +				},
    +				{
    +					"name":"spuNumber",
    +					"value":"2"
    +				},
    +				{
    +					"name":"parallelNumber",
    +					"value":"1"
    +				}
    +			],
    +			"resources":[],
    +			"retryInterval":120,
    +			"retryTimes":0,
    +			"type":"CSJob"
    +		},
    +		{
    +			"failPolicy":"FAIL",
    +			"location":{
    +				"x":"718.0",
    +				"y":"121.0"
    +			},
    +			"maxExecutionTime":60,
    +			"name":"DIS_EVENT",
    +			"pollingInterval":1,
    +			"preNodeName":[
    +				"CS_PROCESS"
    +			],
    +			"properties":[
    +				{
    +					"name":"streamName",
    +					"value":"dis-event"
    +				}
    +			],
    +			"resources":[],
    +			"retryInterval":120,
    +			"retryTimes":0,
    +			"type":"DISStream"
    +		},
    +		{
    +			"eventTrigger":{
    +				"channel":"dis-event",
    +				"concurrent":1,
    +			        "eventType:"DIS",
    +				"readPolicy":"LAST"
    +			},
    +			"failPolicy":"FAIL",
    +			"location":{
    +				"x":"848.0",
    +				"y":"167.0"
    +			},
    +			"maxExecutionTime":60,
    +			"name":"TRIP_RAW_STANDARD",
    +			"pollingInterval":10,
    +			"preNodeName":[
    +				"DIS_EVENT"
    +			],
    +			"properties":[
    +				{
    +					"name":"scriptName",
    +					"value":"TRIP_RAW_STANDARD"
    +				},
    +				{
    +					"name":"database",
    +					"value":"lixinlong"
    +				},
    +				{
    +					"name":"queueName",
    +					"value":"default"
    +				}
    +			],
    +			"resources":[],
    +			"retryInterval":120,
    +			"retryTimes":0,
    +			"type":"DLISQL"
    +		}
    +	],
    +	"params":[
    +		{
    +			"name":"dis_channel",
    +			"value":"dis_input"
    +		}
    +	],
    +	"processType":"REAL_TIME",
    +	"resources":[],
    +	"schedule":{
    +		"type":"EXECUTE_ONCE"
    +	},
    +	"version":"1.0"
    +}
    +
+
  • Success response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0100",
    +    "error_msg":"The job does not exists."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0086.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0086.html new file mode 100644 index 000000000..acc6f2d61 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0086.html @@ -0,0 +1,265 @@ + + +

Viewing a Job List

+

Function

This API is used to query a list of batch or real-time jobs. A maximum of 1000 jobs can be returned for each query.

+
+

URI

  • URI format

    GET /v1/{project_id}/jobs?jobType={jobType}&offset={offset}&limit={limit}&jobName={jobName}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    jobType

    +

    No

    +

    String

    +

    Job type.

    +
    • REAL_TIME: real-time processing
    • BATCH: batch processing
    +

    Default value: BATCH

    +

    offset

    +

    No

    +

    Integer

    +

    Start page of the paging list.

    +

    Default value: 0

    +

    The value must be greater than or equal to 0.

    +

    limit

    +

    No

    +

    Integer

    +

    The maximum number of records on each page.

    +

    Value range: 1 to 100

    +

    Default value: 10

    +

    jobName

    +

    No

    +

    String

    +

    Job name.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 1 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + +
Table 2 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

total

+

Yes

+

Integer

+

Number of jobs.

+

jobs

+

Yes

+

List<Job>

+

Job list. For details, see Table 3.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Job data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Job name.

+

jobType

+

Yes

+

String

+

Job type.

+
  • REAL_TIME: real-time processing
  • BATCH: batch processing
+

status

+

Yes

+

String

+

Job status.

+

When jobType is set to REAL_TIME, the status is as follows:

+
  • STARTING
  • NORMAL
  • EXCEPTION
  • STOPPING
  • STOPPED
+

When jobType is set to BATCH, the status is as follows:

+
  • SCHEDULING
  • STOPPED
  • PAUSED
+

createUser

+

Yes

+

String

+

Job creator.

+

createTime

+

Yes

+

Long

+

Time when the job is created.

+

startTime

+

No

+

Long

+

Time when the job starts to run.

+

endTime

+

No

+

Long

+

Time when the job stops to run.

+

lastInstanceStatus

+

No

+

String

+

Most recent running status of the job instance. This parameter is available only when jobType is set to BATCH.

+

lastInstanceEndTime

+

No

+

Long

+

Time when the most recent job instance stops to run. This parameter is available only when jobType is set to BATCH.

+
+
+
+

Example

View a batch or real-time job list.

+
  • Request
+
GET /v1/ff6b627b9d7b45b48f773be511c1a2b8/jobs
+
  • Response
    {
    +    "jobs": [
    +        {
    +            "createTime": 1680783636000,
    +            "createUser": "test_user",
    +            "jobType": "BATCH",
    +            "lastInstanceEndTime": 1682519407000,
    +            "lastInstanceStatus": "success",
    +            "name": "myJob",
    +            "startTime": 1680783598000,
    +            "status": "SCHEDULING"
    +        }
    +    ],
    +    "total": 1
    +}
    +
+
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.3051",
    +    "error_msg":"The request parameter is invalid."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0087.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0087.html new file mode 100644 index 000000000..544845373 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0087.html @@ -0,0 +1,216 @@ + + +

Viewing Job Details

+

Function

This API is used to view job details.

+
+

URI

  • URI format

    GET /v1/{project_id}/jobs/{name}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameter

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    name

    +

    Yes

    +

    String

    +

    Job name.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

See the request parameters in Creating a Job.

+
+

Example

View details about job myJob.

+
  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/myJob
    +
+
  • Success response
    {
    +	"basicConfig": {
    +		"instanceTimeout": 0,
    +		"priority": 0
    +	},
    +	"logPath": "obs://dlf-log-b384b9e9ab9b4ee8994c8633aabc9505",
    +	"name": "myJob",
    +	"nodes": [{
    +		"failPolicy": "FAIL",
    +		"location": {
    +			"x": "385.0",
    +			"y": "150.0"
    +		},
    +		"maxExecutionTime": 60,
    +		"name": "DIS_INPUT",
    +		"pollingInterval": 1,
    +		"preNodeName": [],
    +		"properties": [{
    +			"name": "streamName",
    +			"value": "csinput"
    +		}],
    +		"resources": [],
    +		"retryInterval": 120,
    +		"retryTimes": 0,
    +		"type": "DISStream"
    +	},
    +	{
    +		"failPolicy": "FAIL",
    +		"location": {
    +			"x": "572.0",
    +			"y": "151.0"
    +		},
    +		"maxExecutionTime": 60,
    +		"name": "CS_PROCESS",
    +		"pollingInterval": 10,
    +		"preNodeName": ["DIS_INPUT"],
    +		"properties": [{
    +			"name": "scriptName",
    +			"value": "CS_PROCESS_TRIP"
    +		},
    +		{
    +			"name": "jobName",
    +			"value": "CS_PROCESS"
    +		},
    +		{
    +			"name": "jobType",
    +			"value": "flink_sql_job"
    +		},
    +		{
    +			"name": "clusterName",
    +			"value": "-1"
    +		},
    +		{
    +			"name": "spuNumber",
    +			"value": "2"
    +		},
    +		{
    +			"name": "parallelNumber",
    +			"value": "1"
    +		}],
    +		"resources": [],
    +		"retryInterval": 120,
    +		"retryTimes": 0,
    +		"type": "CSJob"
    +	},
    +	{
    +		"failPolicy": "FAIL",
    +		"location": {
    +			"x": "718.0",
    +			"y": "121.0"
    +		},
    +		"maxExecutionTime": 60,
    +		"name": "DIS_EVENT",
    +		"pollingInterval": 1,
    +		"preNodeName": ["CS_PROCESS"],
    +		"properties": [{
    +			"name": "streamName",
    +			"value": "dis-event"
    +		}],
    +		"resources": [],
    +		"retryInterval": 120,
    +		"retryTimes": 0,
    +		"type": "DISStream"
    +	},
    +	{
    +		"eventTrigger": {
    +			"channel": "dis-event",
    +			"concurrent": 1,
    +			"engineType": "DIS",
    +			"failPolicy": "CONTINUE",
    +			"readPolicy": "LAST"
    +		},
    +		"failPolicy": "FAIL",
    +		"location": {
    +			"x": "848.0",
    +			"y": "167.0"
    +		},
    +		"maxExecutionTime": 60,
    +		"name": "TRIP_RAW_STANDARD",
    +		"pollingInterval": 10,
    +		"preNodeName": ["DIS_EVENT"],
    +		"properties": [{
    +			"name": "scriptName",
    +			"value": "TRIP_RAW_STANDARD"
    +		},
    +		{
    +			"name": "database",
    +			"value": "lixinlong"
    +		},
    +		{
    +			"name": "queueName",
    +			"value": "default"
    +		}],
    +		"resources": [],
    +		"retryInterval": 120,
    +		"retryTimes": 0,
    +		"type": "DLISQL"
    +	}],
    +	"params": [{
    +		"name": "dis_channel",
    +		"value": "dis_input"
    +	}],
    +	"processType": "REAL_TIME",
    +	"resources": [],
    +	"schedule": {
    +		"type": "EXECUTE_ONCE"
    +	},
    +	"version": "1.0"
    +}
    +
    +
+
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0100",
    +    "error_msg":"The job does not exists."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0088.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0088.html new file mode 100644 index 000000000..a8777ec2b --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0088.html @@ -0,0 +1,171 @@ + + +

Exporting a Job

+

Function

This API is used to export a job, including job definitions, job dependency scripts, and CDM job definitions.

+
+

URI

  • URI format

    POST /v1/{project_id}/jobs/{name}/export

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    name

    +

    Yes

    +

    String

    +

    Job name.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + +
Table 3 Parameter

Parameter

+

Mandatory

+

Type

+

Description

+

exportDepend

+

No

+

boolean

+

Specifies whether to export the scripts and resources that the job depends on.

+

Default value: true

+
+
+
+

Response

The value of Content-Type in the response message is application/octet-stream that needs to be converted into a file. For details, see Parsing a Stream in a Response Message. Response messages are compressed as a file. The file name format is DLF_job_name.zip. The file directory is as follows:

+
jobs
+├─{job_name}.job
+scripts
+├─{script_name}.script
+resources
+├─{resource_name}.resource
+

Table 4 describes the file directory parameters.

+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 4 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

job_name

+

Yes

+

String

+

Job name.

+

script_name

+

No

+

String

+

Name of the script that the job depends on.

+

resource_name

+

No

+

String

+

Name of the resource that the job depends on.

+
+
+
  • {job_name}.job

    The parameters in the file are the same as the request parameters of the API for creating a job. For details, see Creating a Job.

    +
  • {script_name}.script

    The parameters in the file are the same as the request parameters of the API for creating a resource. For details, see Creating a Script.

    +
+
+

Example

Export job myJob.

+
  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/myJob/export
    +{
    +   "exportDepend":true
    +}
    +
+
  • Success response

    HTTP status code 200

    +

    The name of the exported file is DLF_myJob.zip. The file structure after decompression is as follows:

    +
    jobs
    +├─myJob.job
    +scripts
    +├─CS_PROCESS_TRIP.script
    +├─TRIP_RAW_STANDARD.script
    +
+
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0100",
    +    "error_msg":"The job does not exists."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0089.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0089.html new file mode 100644 index 000000000..f57083a53 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0089.html @@ -0,0 +1,123 @@ + + +

Batch Exporting Jobs

+

Function

This API is used to batch export jobs, including job dependency scripts and CDM job definitions.

+
+

URI

  • URI format

    POST /v1/{project_id}/jobs/batch-export

    +
+
  • Parameter description +
    + + + + + + + + + + + +
    Table 1 URI parameter

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 Parameters

Parameter

+

Mandatory

+

Type

+

Description

+

jobList

+

Yes

+

List

+

A list of jobs to be exported. A maximum of 100 jobs can be exported at a time.

+

exportDepend

+

No

+

boolean

+

Specifies whether to export the scripts and resources that the job depends on.

+

Default value: true

+
+
+
+

Response

The response message of batch exporting jobs is the same as that of exporting jobs. For details, see Response.

+
+

Example

Export two jobs named job_batch and job_stream.

+
  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/batch-export
    +{
    +   "jobList":["job_batch","job_stream"],
    +   "exportDepend":true
    +}
    +
+
  • Success response

    The name of the exported file is jobs.zip. The file structure after decompression is as follows:

    +
    jobs
    ++---job_batch
    +|       dws_sql.script
    +|       job_batch.job
    +\---job_stream
    +job_stream.job
    +

    job_batch.job and job_stream.job are job definition files.

    +

    dli_sql.script is the DLI SQL script file used by job_batch.job.

    +
+
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.3051",
    +    "error_msg":"The request parameter is invalid."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0090.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0090.html new file mode 100644 index 000000000..d8a7047a5 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0090.html @@ -0,0 +1,184 @@ + + +

Importing a Job

+

Function

This API is used to import one or more job files from OBS to DLF.

+ +

Before using this API, store job files in OBS buckets.

+
+
+

URI

  • URI format

    POST /v1/{project_id}/jobs/import

    +
+
  • Parameter description +
    + + + + + + + + + + + +
    Table 1 URI parameter

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

path

+

Yes

+

String

+

If OBS is deployed, it refers to the OBS path for storing the job definition file. For the format of the job definition file, see the response message of the exported job, for example, obs://myBucket/jobs.zip.

+

params

+

No

+

Map<String,String>

+

Public job parameter.

+

sameNamePolicy

+

No

+

String

+

Policy for specifying how to handle duplicate names. The options are as follows:

+
  • SKIP
  • OVERWRITE
+

Default value: SKIP

+

jobsParam

+

No

+

List<JobParam>

+

Job parameter. For details, see Table 3.

+

executeUser

+

No

+

String

+

User that executes the job.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 3 JobParam parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Job name.

+

params

+

No

+

Map<String,String>

+

Job parameter.

+
+
+
+

Response

+
+ + + + + + + + + + + +
Table 4 Response parameter

Parameter

+

Mandatory

+

Type

+

Description

+

taskId

+

Yes

+

String

+

ID of the task. Used to call the API for querying system tasks to obtain the import status.

+
+
+
+

Example

Import jobs from OBS to DLF. If there are jobs and scripts with the same name, overwrite them.

+
  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/import
    +{
    +"path": "obs://aaaaa/job_batch.zip",
    +"sameNamePolicy": "OVERWRITE",
    +"jobsParam": [{
    +"name": "job_batch",
    +"params": {
    +"streamName": "dis-AHTr"
    +}
    +}]
    +}
    +
+
  • Success response
    HTTP status code 200
    {
    +"taskId":"008aae2e675933c7016759418e870000"
    +}
    +
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0815",
    +    "error_msg":"Fail to read OBS file."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0091.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0091.html new file mode 100644 index 000000000..e11a60608 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0091.html @@ -0,0 +1,177 @@ + + +

Executing a Job Immediately

+

Function

This API is used to execute a job immediately and check whether the job can be executed successfully.

+
+

URI

  • URI format

    POST /v1/{project_id}/jobs/{job_name}/run-immediate

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameter

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    job_name

    +

    Yes

    +

    String

    +

    Job name.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + +
Table 3 Parameter

Parameter

+

Mandatory

+

Type

+

Description

+

jobParams

+

No

+

List<JobParam>

+

Parameter for starting the job.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 4 JobParam data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Name of the parameter. It cannot exceed 64 characters.

+

value

+

Yes

+

String

+

Value of the parameter. It cannot exceed 1024 characters.

+
+
+
+

Response

+
+ + + + + + + + + + + +
Table 5 Response parameter

Parameter

+

Mandatory

+

Type

+

Description

+

instanceId

+

Yes

+

Long

+

Job instance ID.

+
+
+
+

Example

Execute the myJob job once.

+
  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/myJob/run-immediate
    +{
    +    "jobParams":[
    +        {
    +            "name":"aaa",
    +            "value":"111"
    +        },
    +        {
    +            "name":"bbb",
    +            "value":"222"
    +        }
    +    ]
    +}
    +
+
  • Success response
    {
    +    "instanceId":132343
    +}
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0100",
    +    "error_msg":"The job does not exists."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0092.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0092.html new file mode 100644 index 000000000..87fb2d079 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0092.html @@ -0,0 +1,141 @@ + + +

Starting a Job

+

Function

This API is used to start a job.

+
+

URI

  • URI format

    POST /v1/{project_id}/jobs/{name}/start

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    name

    +

    Yes

    +

    String

    +

    Job name.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + +
Table 3 Parameter

Parameter

+

Mandatory

+

Type

+

Description

+

jobParams

+

No

+

List<JobParam>

+

Parameter for starting the job.

+
+
+ +
+ + + + + + + + + + + + + + + + +
Table 4 JobParam data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Name of the parameter. It cannot exceed 64 characters.

+

value

+

Yes

+

String

+

Value of the parameter. It cannot exceed 1024 characters.

+
+
+
+

Response

None.

+
+

Example

Start job myJob.

+
  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/myJob/start
    +
+
  • Success response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0100",
    +    "error_msg":"The job does not exists."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0093.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0093.html new file mode 100644 index 000000000..4c411cc58 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0093.html @@ -0,0 +1,220 @@ + + +

Viewing Running Status of a Real-Time Job

+

Function

This API is used to view running status of a real-time job.

+
+

URI

  • URI format

    GET /v1/{project_id}/jobs/{job_name}/status

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    job_name

    +

    Yes

    +

    String

    +

    Job name.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Name of a solution.

+

nodes

+

No

+

List

+

Node status list.

+

status

+

No

+

String

+

Job status.

+
  • STARTING
  • NORMAL
  • EXCEPTION
  • STOPPING
  • STOPPED
+

startTime

+

Yes

+

Date

+

Start time.

+

endTime

+

No

+

Date

+

End time.

+

lastUpdateTime

+

No

+

Date

+

Last update time.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Data structure description of nodes

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Node name.

+

status

+

No

+

String

+

Node status.

+
  • STARTING
  • NORMAL
  • EXCEPTION
  • STOPPING
  • STOPPED
+

logPath

+

No

+

String

+

Path for storing node run logs.

+

type

+

Yes

+

String

+

Node type.

+
  • Hive SQL: Runs Hive SQL scripts.
  • Spark SQL: Runs Spark SQL scripts.
  • DWS SQL: Runs DWS SQL scripts.
  • DLI SQL: Runs DLI SQL scripts.
  • Shell: Runs shell SQL scripts.
  • CDM Job: Runs CDM jobs.
  • DIS Transfer Task: Creates DIS dump tasks.
  • CS Job: Creates and starts CloudStream jobs.
  • CloudTable Manager: Manages CloudTable tables, including creating and deleting tables.
  • OBS Manager: Manages OBS paths, including creating and deleting paths.
  • RESTAPI: Sends REST API requests.
  • SMN: Sends short messages or emails.
  • MRS Spark: Runs Spark jobs of MRS.
  • MapReduce: Runs MapReduce jobs of MRS.
+
+
+
+

Example

View running status of real-time job job_sms and the running status of each node in the job. job_sms has seven nodes, as shown in the following figure:

+
Figure 1 job_sms
+
  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/job_sms/status
    +
+
  • Success response
    {
    +    "lastUpdateTime": 1682582558000,
    +    "name": "job_sms",
    +    "nodes": [
    +        {
    +            "logPath": "obs://dlf-test-log/job_sms/2023-04-27_16_03_31.000/MRS_Flink_Job_8635/MRS_Flink_Job_8635.job",
    +            "name": "MRS_Flink_Job_8635",
    +            "status": "NORMAL",
    +            "type": "MRS Flink Job"
    +        }
    +    ],
    +    "startTime": 1682582619000,
    +    "status": "NORMAL"
    +}
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0100",
    +    "error_msg":"The job does not exists."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0094.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0094.html new file mode 100644 index 000000000..007c42ff3 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0094.html @@ -0,0 +1,284 @@ + + +

Viewing a Job Instance List

+

Function

This API is used to view a job instance list.

+

A job instance is generated each time you run a batch job for which periodic scheduling or event-based scheduling is configured. If a real-time job contains a node for which periodic scheduling or event-based scheduling is configured, you can call this API to view the instance list of the subjobs associated with the node. The format of the jobName parameter is real-time job name_node name.

+
+

URI

  • URI format

    GET /v1/{project_id}/jobs/instances/detail?jobName={jobName}&minPlanTime={minPlanTime}&maxPlanTime={maxPlanTime}&limit={limit}&offset={offset}&status={status}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    jobName

    +

    No

    +

    String

    +

    Job name.

    +
    • If you want to query the instance list of a specific batch job, jobName is the batch job name.
    • If you want to query sub-jobs associated with a node in a real-time job, the jobName format is real-time job name _ node name.
    +

    minPlanTime

    +

    No

    +

    Long

    +

    Minimum planned job execution time in milliseconds. Job instances whose planned execution time is longer than this time are returned.

    +

    maxPlanTime

    +

    No

    +

    Long

    +

    Maximum planned job execution time in milliseconds. Job instances whose planned execution time is shorter than this time are returned.

    +

    limit

    +

    No

    +

    int

    +

    The maximum number of records on each page.

    +

    The parameter value ranges from 1 to 1000.

    +

    Default value: 10

    +

    offset

    +

    No

    +

    int

    +

    Start page of the paging list. The default value is 0. The value must be greater than or equal to 0.

    +

    status

    +

    No

    +

    String

    +

    Job instance status.

    +
    • waiting
    • running
    • success
    • fail
    • running-exception
    • pause
    • manual-stop
    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

total

+

Yes

+

int

+

Total number of records.

+

instances

+

Yes

+

List<Instance>

+

Job instance status. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 instances parameters

Parameter

+

Mandatory

+

Type

+

Description

+

jobName

+

Yes

+

String

+

Job name. When you view the instance list of a specified batch job, jobName is the name of the batch job. When you view the subjobs associated with a node in a real-time job, jobName is in format of real-time job name_node name.

+

jobInstanceName

+

Yes

+

String

+

Name of a job instance recorded by the log, rather than the name defined during job creation

+

status

+

Yes

+

String

+

Job instance status.

+
  • waiting
  • running
  • success
  • fail
  • running-exception
  • pause
  • manual-stop
+

planTime

+

Yes

+

Long

+

Planned execution time of the job instance.

+

startTime

+

Yes

+

Long

+

Actual execution start time of the job instance.

+

endTime

+

No

+

Long

+

Actual execution end time of the job instance.

+

executeTime

+

No

+

Long

+

Execution duration in milliseconds.

+

instanceId

+

Yes

+

Long

+

Job instance ID.

+

submitTime

+

Yes

+

Long

+

Time when a job is submitted.

+
+
+
+

Example 1

View the instance list of batch job job_batch.

+
  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/instances/detail?jobName=job_batch
    +
+
  • Success response
    {
    +	"total": 2,
    +	"instances": [{
    +		"endTime": 1551671598000,
    +		"executeTime": 0.3,
    +		"instanceId": 34765,
    +                
    +		"jobName": "job_batch",
    +                "jobInstanceName": "job_batch",
    +		"planTime": 1551671580000,
    +		"startTime": 1551671580000,
    +		"status": "success",
    +		"submitTime": 1550910278706
    +	},
    +	{
    +		"endTime": 1551671538000,
    +		"executeTime": 0.3,
    +		"instanceId": 34764,
    +                
    +		"jobName": "job_batch",
    +                "jobInstanceName": "job_batch",
    +		"planTime": 1551671520000,
    +		"startTime": 1551671521000,
    +		"status": "success",
    +		"submitTime": 1550910278706
    +	}]
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0095.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0095.html new file mode 100644 index 000000000..099263fbd --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0095.html @@ -0,0 +1,343 @@ + + +

Viewing Job Instance Details

+

Function

This API is used to view job instance details, including the execution information about each node in a job instance.

+
+

URI

  • URI format

    GET /v1/{project_id}/jobs/{job_name}/instances/{instance_id}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    job_name

    +

    Yes

    +

    String

    +

    Job name.

    +

    instance_id

    +

    Yes

    +

    Long

    +

    Job instance ID.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

jobName

+

Yes

+

String

+

Job name.

+

instanceId

+

Yes

+

Long

+

Job instance ID.

+

status

+

Yes

+

String

+

Job instance status.

+
  • waiting
  • running
  • success
  • fail
  • running-exception
  • pause
  • manual-stop
+

planTime

+

Yes

+

Long

+

Planned execution time of the job instance.

+

startTime

+

Yes

+

Long

+

Actual execution start time of the job instance.

+

endTime

+

No

+

Long

+

Actual execution end time of the job instance.

+

executeTime

+

No

+

Long

+

Execution duration in milliseconds.

+

total

+

Yes

+

int

+

Total number of node records.

+

nodes

+

Yes

+

List<Node>

+

Node instance status. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Node parameters

Parameter

+

Mandatory

+

Type

+

Description

+

nodeName

+

Yes

+

String

+

Node name.

+

status

+

Yes

+

String

+

Node status.

+
  • waiting
  • running
  • success
  • fail
  • skip
  • pause
  • manual-stop
+

planTime

+

Yes

+

Long

+

Planned execution time of the job instance.

+

startTime

+

Yes

+

Long

+

Actual execution start time of the node.

+

endTime

+

No

+

Long

+

Actual execution end time of the node.

+

type

+

Yes

+

String

+

Node type.

+

retryTimes

+

No

+

Int

+

Number of attempts upon a failure.

+

instanceId

+

Yes

+

Long

+

Job instance ID.

+

inputRowCount

+

No

+

Long

+

Rows of input data.

+

speed

+

No

+

double

+

Write speed (row/second)

+

logPath

+

No

+

String

+

Path for storing node execution logs.

+
+
+
+

Example

View details about the instance whose ID is 34765 in job job_batch.

+
  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs/job_batch/instances/34765
    +
+
  • Response
    {
    +    "jobName":"job_batch",
    +    "instanceId":34765,
    +    
    +    "status":"fail",
    +    "planTime":1551425326540,
    +    "startTime":1551425327000,
    +    "endTime":1551425387000,
    +    "executeTime":1,
    +    "total":2,
    +    "nodes":[
    +        {
    +            "endTime":1551671590000,
    +            "inputRowCount":0,
    +            "instanceId":34765,
    +            "nodeName":"Dummy_8556",
    +            
    +            "planTime":1551671580000,
    +            "retryTimes":0,
    +            "startTime":1551671584000,
    +            "status":"success",
    +            "submitTime":1550910278706,
    +            "type":"Dummy"
    +        },
    +        {
    +            "endTime":1551671598000,
    +            "inputRowCount":0,
    +            "instanceId":34765,
    +            "logPath":"obs://dlf-log-b384b9e9ab9b4ee8994c8633aabc9505/job_batch/2019-03-04 11_53_00.000/error/error.job",
    +            "nodeName":"error",
    +            
    +            "planTime":1551671580000,
    +            "retryTimes":0,
    +            "startTime":1551671594000,
    +            "status":"success",
    +            "submitTime":1550910278706,
    +            "type":"DWS SQL"
    +        }
    +    ]
    +}
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0137",
    +    "error_msg":"Job instance does not exist."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0096.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0096.html new file mode 100644 index 000000000..99834c313 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0096.html @@ -0,0 +1,257 @@ + + +

Querying a System Task

+

Function

This API is used to query details about asynchronous tasks.

+
+

URI

  • URI format

    GET /v1/{project_id}/system-tasks/{task_id}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    task_id

    +

    Yes

    +

    String

    +

    Task ID.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

Task ID.

+

name

+

Yes

+

String

+

Name of the task.

+

startTime

+

Yes

+

Long

+

Start time.

+

endTime

+

No

+

Long

+

End time.

+

lastUpdate

+

Yes

+

Long

+

Time when the task was last updated.

+

status

+

Yes

+

String

+

Task status.

+
  • RUNNING
  • SUCCESSFUL
  • FAILED
+

message

+

No

+

String

+

Task information.

+

subtasks

+

No

+

List<SubTask>

+

Subtask. For details, see Table 4.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 subtasks parameters

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

Subtask ID.

+

name

+

Yes

+

String

+

Name of the subtask.

+

startTime

+

Yes

+

Long

+

Start time.

+

endTime

+

No

+

Long

+

End time.

+

lastUpdate

+

Yes

+

Long

+

Time when the task was last updated.

+

status

+

Yes

+

String

+

Task status.

+
  • RUNNING
  • SUCCESSFUL
  • FAILED
+
+
+
+

Example

After the solution is imported successfully, query the task information.

+
  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/systemTasks/008aae2e675d3bcb01675d40ab3f0005
    +
+
  • Success Response
    {
    +"endTime":1543457514000,
    +"id":"008aae2e675d3bcb01675d3c66f20000",
    +"lastUpdate":1543457514000,
    +"name": "Import the solution from OBS path obs://aaaaa/traffic.zip.",
    +"startTime":1543457499000,
    +"status":"SUCCESSFUL",
    +"subtasks":[
    +{
    +"id":"008aae2e675d3bcb01675d3c9f5f0002",
    +"lastUpdate":1543457513000,
    +"name": "Import the job_batch job.",
    +"status":"SUCCESSFUL",
    +}
    +]
    +}
    +
+
+
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0810",
    +    "error_msg":"Task does not exist"
    +}
    +
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0097.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0097.html new file mode 100644 index 000000000..db78f0978 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0097.html @@ -0,0 +1,184 @@ + + +

Creating a Script

+

Function

This API is used to create a script. Currently, the following script types are supported: DLI SQL, Flink SQL, RDS SQL, Spark SQL, Hive SQL, DWS SQL, Shell, and Presto.

+
+

URI

  • URI format

    POST /v1/{project_id}/scripts

    +
+
+
  • Parameter description +
    + + + + + + + + + + + +
    Table 1 URI parameter

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Script parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Script name. The name contains a maximum of 128 characters, including only letters, numbers, hyphens (-), and periods (.). The script name must be unique.

+

type

+

Yes

+

String

+

Script type.

+
  • FlinkSQL
  • DLISQL
  • SparkSQL
  • HiveSQL
  • DWSSQL
  • RDSSQL
  • Shell
  • PRESTO
+

content

+

Yes

+

String

+

Script content. A maximum of 64 KB is supported.

+

directory

+

No

+

String

+

Directory for storing the script.

+

Access the DataArts Studio console and choose Data Development. In the left navigation pane, choose Development > Develop Script. In the directory tree of the script, you can view the created directories. The default directory is the root directory.

+

connectionName

+

No

+

String

+

Name of the connection associated with the script. This parameter is mandatory when type is set to DLISQL, SparkSQL, HiveSQL, DWSSQL, Shell, or PRESTO. To obtain the existing connections, refer to the instructions in Querying a Connection List. By default, this parameter is left blank.

+

database

+

No

+

String

+

Database associated with an SQL statement. This parameter is available only when type is set to DLISQL, SparkSQL, HiveSQL, DWSSQL, or PRESTO.

+
  • If type is set to DLI SQL, obtain database information by calling the API for querying all databases in the Data Lake Insight API Reference.
  • Connect to the cluster in JDBC mode to query database information if type is not set to DLISQL. By default, this parameter is left blank.
+

queueName

+

No

+

String

+

Queue name of the DLI resource. This parameter is available only when type is set to DLISQL. You can obtain the queue information by calling the API for "Querying All Queues" in the Data Lake Insight API Reference. By default, this parameter is left blank.

+

configuration

+

No

+

map <String,Object>

+

Configuration defined by a user for the job. This parameter is available only when type is set to DLISQL. For details about the supported configuration items, see conf parameter description in the "Submitting a SQL Job" section of the Data Lake Insight API Reference. By default, this parameter is left blank.

+

description

+

No

+

String

+

The description contains a maximum of 255 characters.

+
+
+
+

Response

None.

+
+

Example

Create a script.

+
  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/scripts
    +{
    +"name":"echoTimeShell",
    +"type":"Shell",
    +"content":"echo a",
    +"connectionName":"con"
    +}
    +
+
+
  • Success response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6247",
    +    "error_msg":"The script type is not specified."
    +}
    +

    +
+

Status Code

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0098.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0098.html new file mode 100644 index 000000000..f75d97ff4 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0098.html @@ -0,0 +1,191 @@ + + +

Modifying a Script

+

Function

This API is used to modify the configuration items or script contents of a script.

+
  • When modifying a script, specify the name of the script to be modified.
  • The script name and type cannot be modified.
+
+

URI

  • URI format

    PUT /v1/{project_id}/scripts/{script_name}

    +
+
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    projectId

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    script_name

    +

    Yes

    +

    String

    +

    Script name.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Script parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Script name. The name contains a maximum of 128 characters, including only letters, numbers, hyphens (-), and periods (.). The script name must be unique.

+

type

+

Yes

+

String

+

Script type.

+
  • FlinkSQL
  • DLISQL
  • SparkSQL
  • HiveSQL
  • DWSSQL
  • RDSSQL
  • Shell
  • PRESTO
+

content

+

Yes

+

String

+

Script content. A maximum of 64 KB is supported.

+

directory

+

No

+

String

+

Directory for storing the script.

+

Access the DataArts Studio console and choose Data Development. In the left navigation pane, choose Development > Develop Script. In the directory tree of the script, you can view the created directories. The default directory is the root directory.

+

connectionName

+

No

+

String

+

Name of the connection associated with the script. This parameter is mandatory when type is set to DLISQL, SparkSQL, HiveSQL, DWSSQL, Shell, or PRESTO. To obtain the existing connections, refer to the instructions in Querying a Connection List. By default, this parameter is left blank.

+

database

+

No

+

String

+

Database associated with an SQL statement. This parameter is available only when type is set to DLISQL, SparkSQL, HiveSQL, DWSSQL, or PRESTO.

+
  • If type is set to DLI SQL, obtain database information by calling the API for querying all databases in the Data Lake Insight API Reference.
  • Connect to the cluster in JDBC mode to query database information if type is not set to DLISQL. By default, this parameter is left blank.
+

queueName

+

No

+

String

+

Queue name of the DLI resource. This parameter is available only when type is set to DLISQL. You can obtain the queue information by calling the API for "Querying All Queues" in the Data Lake Insight API Reference. By default, this parameter is left blank.

+

configuration

+

No

+

map <String,Object>

+

Configuration defined by a user for the job. This parameter is available only when type is set to DLISQL. For details about the supported configuration items, see conf parameter description in the "Submitting a SQL Job" section of the Data Lake Insight API Reference. By default, this parameter is left blank.

+

description

+

No

+

String

+

Description of the script. The description contains a maximum of 255 characters.

+
+
+
+

Response

None.

+
+

Example

Modify the script content.

+
  • Request
    PUT /v1/b384b9e9ab9b4ee8994c8633aabc9505/scripts/echoTimeShell
    +{
    +    "name": "echoTimeShell",
    +    "type": "Shell",
    +    "content": "echo a",
    +    "connectionName": "con"
    +}
    +
+
+
  • Success response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6201",
    +    "error_msg":"The script does not exist."
    +}
    +
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0099.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0099.html new file mode 100644 index 000000000..447273150 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0099.html @@ -0,0 +1,206 @@ + + +

Querying a Script

+

Function

This API is used to query a script, including the script type and script content.

+
+

URI

  • URI format

    GET /v1/{project_id}/script/{script_name}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    script_name

    +

    Yes

    +

    String

    +

    Script name.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Script parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Script name. The name contains a maximum of 128 characters, including only letters, numbers, hyphens (-), and periods (.). The script name must be unique.

+

type

+

Yes

+

String

+

Script type.

+
  • FlinkSQL
  • DLISQL
  • SparkSQL
  • HiveSQL
  • DWSSQL
  • RDSSQL
  • Shell
  • PRESTO
+

content

+

Yes

+

String

+

Script content. A maximum of 64 KB is supported.

+

directory

+

No

+

String

+

Directory for storing the script.

+

Access the DataArts Studio console and choose DataArts Factory. In the left navigation pane, choose Development > Develop Script. In the directory tree of the script, you can view the created directories. The default directory is the root directory.

+

connectionName

+

No

+

String

+

Name of the connection associated with the script. This parameter is mandatory when type is set to DLISQL, SparkSQL, HiveSQL, DWSSQL, Shell, or PRESTO. To obtain the existing connections, refer to the instructions in Querying a Connection List. By default, this parameter is left blank.

+

database

+

No

+

String

+

Database associated with an SQL statement. This parameter is available only when type is set to DLISQL, SparkSQL, HiveSQL, or DWSSQL.

+
  • If type is set to DLISQL, obtain database information by calling the API for "Querying All Databases" in the Data Lake Insight API Reference.
  • Connect to the cluster in JDBC mode to query database information if type is not set to DLISQL. By default, this parameter is left blank.
+

queueName

+

No

+

String

+

Queue name of the DLI resource. This parameter is available only when type is set to DLISQL. You can obtain the queue information by calling the API for "Querying All Queues" in the Data Lake Insight API Reference. By default, this parameter is left blank.

+

configuration

+

No

+

map <String,Object>

+

Configuration defined by a user for the job. This parameter is available only when type is set to DLISQL. For details about the supported configuration items, see conf parameter description in the "Submitting a SQL Job" section of the Data Lake Insight API Reference. By default, this parameter is left blank.

+

description

+

No

+

String

+

Description of the script. The description contains a maximum of 255 characters.

+

autoAcquireLock

+

No

+

boolean

+

Whether to automatically obtain the edit lock parameters. The default value is true.

+
+
+
+

Example

+
  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/scripts/scriptName
    +
+
  • Success response
    HTTP status code 200
    {
    +        "autoAcquireLock":true,
    +	"configuration":{},
    +	"connectionName":"DLICOnn",
    +	"content":"SELECT 1;",
    +	"database":"aaa",
    +	"description":"",
    +	"directory":"/",
    +	"name":"S1",
    +	"queueName":"default",
    +	"type":"DLISQL"
    +}
    +
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6201",
    +    "error_msg":"The script does not exist."
    +}
    +
+
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0100.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0100.html new file mode 100644 index 000000000..8b442b8c2 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0100.html @@ -0,0 +1,249 @@ + + +

Querying a Script List

+

Function

This API is used to query the script list. A maximum of 1000 scripts can be returned for each query.

+
+

URI

  • URI format

    GET /v1/{project_id}/scripts?offset={offset}&limit={limit}&scriptName={scriptName}

    +
+
+
  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    limit

    +

    No

    +

    Integer

    +

    The maximum number of records on each page. The value ranges from 1 to 100.

    +

    Default value: 10

    +

    offset

    +

    No

    +

    Integer

    +

    Start page of the paging list. The default value is 0. The value must be greater than or equal to 0.

    +

    scriptName

    +

    No

    +

    String

    +

    Script name.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

total

+

Yes

+

Integer

+

The total number of scripts.

+

scripts

+

Yes

+

List<Script>

+

A list of scripts.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Script parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Script name. The name contains a maximum of 128 characters, including only letters, numbers, hyphens (-), and periods (.). The script name must be unique.

+

type

+

Yes

+

String

+

Script type.

+
  • FlinkSQL
  • DLISQL
  • SparkSQL
  • HiveSQL
  • DWSSQL
  • RDSSQL
  • Shell
  • PRESTO
+

content

+

Yes

+

String

+

Script content. A maximum of 64 KB is supported.

+

directory

+

No

+

String

+

Directory for storing the script.

+

Access the DataArts Studio console and choose DataArts Factory. In the left navigation pane, choose Development > Develop Script. In the directory tree of the script, you can view the created directories. The default directory is the root directory.

+

connectionName

+

No

+

String

+

Name of the connection associated with the script. This parameter is mandatory when type is set to DLISQL, SparkSQL, HiveSQL, DWSSQL, Shell, or PRESTO. To obtain the existing connections, refer to the instructions in Querying a Connection List. By default, this parameter is left blank.

+

database

+

No

+

String

+

Database associated with an SQL statement. This parameter is available only when type is set to DLISQL, SparkSQL, HiveSQL, DWSSQL, or PRESTO.

+
  • If type is set to DLISQL, obtain database information by calling the API for "Querying All Databases" in the Data Lake Insight API Reference.
  • If type is not set to DLISQL, connect to the cluster in JDBC mode to query database information. By default, this parameter is left blank.
+

queueName

+

No

+

String

+

Queue name of the DLI resource. This parameter is available only when type is set to DLISQL. You can obtain the queue information by calling the API for "Querying All Queues" in the Data Lake Insight API Reference. By default, this parameter is left blank.

+

configuration

+

No

+

map <String,Object>

+

Configuration defined by a user for the job. This parameter is available only when type is set to DLISQL. For details about the supported configuration items, see conf parameter description in the "Submitting a SQL Job" section of the Data Lake Insight API Reference. By default, this parameter is left blank.

+

description

+

No

+

String

+

Description of the script. The description contains a maximum of 255 characters.

+
+
+
+

Example

Query a script list.

+
  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/scripts
    +
+
+
  • Success response

    HTTP status code 200

    +
    {
    +    "total": 1,
    +    "scripts": [
    +        {
    +            "configuration": {},
    +            "connectionName": "mrs_spark",
    +            "content": "SELECT 1;",
    +            "database": "aaa",
    +            "description": "",
    +            "directory": "/",
    +            "name": "mrs_spark_sql",
    +            "type": "SparkSQL"
    +        }
    +    ]
    +}
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.3051",
    +    "error_msg":"The request parameter is invalid."
    +}
    +
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0101.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0101.html new file mode 100644 index 000000000..187407bcc --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0101.html @@ -0,0 +1,244 @@ + + +

Querying the Execution Result of a Script Instance

+

Function

This API is used to obtain the execution status and result of a script instance.

+

During the query, specify the script name and script instance ID.

+
+

URI

  • URI format

    GET /v1/{project_id}/scripts/{script_name}/instances/{instance_id}

    +
+
+
  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    script_name

    +

    Yes

    +

    String

    +

    Script name.

    +

    instance_id

    +

    Yes

    +

    String

    +

    ID of the script instance.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

status

+

Yes

+

String

+

Execution status.

+

LAUNCHING: The script instance is being submitted.

+

RUNNING: The script instance is running.

+

FINISHED: The script instance is successfully run.

+

FAILED: The script instance fails to be run.

+

results

+

Yes

+

List<Result>

+

Execution result of the script instance.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Result data structure description

Parameter

+

Mandatory

+

Type

+

Description

+

message

+

No

+

String

+

Execution failure message.

+

duration

+

No

+

float

+

Duration of executing the script instance. Unit: second

+

rowCount

+

No

+

Int

+

Number of the result rows.

+

rows

+

No

+

List<List<Object>>

+

Result data.

+

schema

+

No

+

List<Map<String, String>>

+

Format definition of the result data.

+
+
+
+

Example

  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/scripts/dwsscript/instances/a1ad-448a-9d56-4154193d49c5
    +
+
+
  • Success response

    HTTP status code 200

    +
    {
    +	"results": [{
    +		"message": "",
    +                "duration":0.5,
    +		"rowCount": 1,
    +		"rows": [[913460.0,
    +		765.0,
    +		"8/31/2015 23:26",
    +		"Harry Bridges Plaza (Ferry Building)",
    +		50.0,
    +		"8/31/2015 23:39",
    +		"San Francisco Caltrain (Townsend at 4th)",
    +		70.0,
    +		"288",
    +		"Subscriber",
    +		"2139"]],
    +		"schema": [{
    +			"TripID": "int"
    +		},
    +		{
    +			"Duration": "int"
    +		},
    +		{
    +			"StartDate": "string"
    +		},
    +		{
    +			"StartStation": "string"
    +		},
    +		{
    +			"StartTerminal": "int"
    +		},
    +		{
    +			"EndDate": "string"
    +		},
    +		{
    +			"EndStation": "string"
    +		},
    +		{
    +			"EndTerminal": "int"
    +		},
    +		{
    +			"Bike": "string"
    +		},
    +		{
    +			"SubscriberType": "string"
    +		},
    +		{
    +			"ZipCode": "string"
    +		}]
    +	}],
    +	"status": "FINISHED"
    +}
    +
+
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6201",
    +    "error_msg":"The script does not exist."
    +}
    +
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0102.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0102.html new file mode 100644 index 000000000..ece0cae17 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0102.html @@ -0,0 +1,180 @@ + + +

Creating a Resource

+

Function

This API is used to create a resource. Types of nodes, including DLI Spark, MRS Spark, and MRS MapReduce, can reference files such as JAR and properties through resources.

+
+

URI

  • URI format

    POST /v1/{project_id}/resources

    +
+
  • Parameter description +
    + + + + + + + + + + + +
    Table 1 URI parameter

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Resource parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Name of the resource. The name contains a maximum of 32 characters, including only letters, numbers, underscores (_), and hyphens (-).

+

type

+

Yes

+

String

+

Resource type.

+
  • archive
  • file
  • jar
+

location

+

Yes

+

String

+

OBS path for storing the resource file. When type is set to jar, location is the path for storing the main JAR package. The path contains a maximum of 256 characters. For example, obs://myBucket/test.jar

+

dependFiles

+

No

+

List<String>

+

JAR package and properties file that the main JAR package depends on. The description contains a maximum of 10,240 characters.

+

desc

+

No

+

String

+

Description of the resource. The description contains a maximum of 255 characters.

+

directory

+

No

+

String

+

Directory for storing the resource.

+

Access the DataArts Studio console and choose Data Development. In the left navigation pane, choose Development > Develop Script. In the directory tree of the script, you can view the created directories. The default directory is the root directory.

+
+
+
+

Response

+
+ + + + + + + + + + + +
Table 4 Response parameter

Parameter

+

Mandatory

+

Type

+

Description

+

resourceId

+

Yes

+

String

+

Resource ID.

+
+
+
+

Example

  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/resources
    +{
    +	"name": "test",
    +	"type": "jar",
    +	"location": "obs://00000000dlf-test/hadoop-mapreduce-examples-2.4.1.jar",
    +	"dependFiles": ["obs://00000000dlf-test/depend1.jar","obs://00000000dlf-test/depend2.jar"],
    +	"desc": "test",
    +	"directory":"/resource"
    +}
    +
+
  • Success response
    {
    +	"resourceId":"3624d1c3-5df5-4f20-9af9-98eadad6c5f9"
    +}
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6259",
    +    "error_msg":"Files of the same name exist in the directory."
    +}
    +
+
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0103.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0103.html new file mode 100644 index 000000000..04405fb45 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0103.html @@ -0,0 +1,164 @@ + + +

Modifying a Resource

+

Function

This API is used to modify a specific resource. When modifying the resource, specify the resource ID.

+
  • The resource type and directory cannot be modified.
+
+

URI

  • URI format

    PUT /v1/{project_id}/resources/{resource_id}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    resource_id

    +

    Yes

    +

    String

    +

    Resource ID.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Resource parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Name of the resource. The name contains a maximum of 32 characters, including only letters, numbers, underscores (_), and hyphens (-).

+

type

+

Yes

+

String

+

Resource type.

+
  • archive
  • file
  • jar
+

location

+

No

+

String

+

OBS path for storing the resource file. When type is set to jar, location is the path for storing the main JAR package. The path contains a maximum of 256 characters. For example, obs://myBucket/test.jar

+

dependFiles

+

No

+

List<String>

+

JAR package and properties file that the main JAR package depends on. The description contains a maximum of 10,240 characters.

+

desc

+

No

+

String

+

Description of the resource. The description contains a maximum of 255 characters.

+

directory

+

Yes

+

String

+

Directory for storing the resource.

+

Access the DataArts Studio console and choose Data Development. In the left navigation pane, choose Development > Develop Script. In the directory tree of the script, you can view the created directories. The default directory is the root directory.

+
+
+
+

Response

None.

+
+

Request Example

PUT /v1/b384b9e9ab9b4ee8994c8633aabc9505/resources/3624d1c3-5df5-4f20-9af9-98eadad6c5f9
+{
+	"name": "test",
+	"type": "jar",
+	"location": "obs://dlf-test/hadoop-mapreduce-examples-2.4.1.jar",
+	"dependFiles": ["obs://dlf-test/depend1.jar","obs://dlf-test/depend2.jar"],
+	"desc": "test",
+	"directory":"/resource"
+}
+
+

Response Example

  • Success response

    HTTP status code 204

    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6241",
    +    "error_msg":"The resource information does not exist."
    +}
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0104.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0104.html new file mode 100644 index 000000000..b9c3e6de2 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0104.html @@ -0,0 +1,164 @@ + + +

Querying a Resource

+

Function

This API is used to query resource details. A resource contains various files such as JAR, ZIP, and properties files. A created resource can be used in job nodes such as DLI Spark and MRS Spark.

+
+

URI

  • URI format

    GET /v1/{project_id}/resources/{resource_id}

    +
+
  • Parameter description +
    + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    resource_id

    +

    Yes

    +

    String

    +

    Resource ID.

    +
    +
    +
+
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 Resource parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Name of the resource. The name contains a maximum of 32 characters, including only letters, numbers, underscores (_), and hyphens (-).

+

type

+

Yes

+

String

+

Resource type.

+
  • archive
  • file
  • jar
+

location

+

Yes

+

String

+

OBS path for storing the resource file. When type is set to jar, location is the path for storing the main JAR package. The path contains a maximum of 256 characters. For example, obs://myBucket/test.jar

+

dependFiles

+

No

+

List<String>

+

JAR package and properties file that the main JAR package depends on. The description contains a maximum of 10,240 characters.

+

desc

+

No

+

String

+

Description of the resource. The description contains a maximum of 255 characters.

+

directory

+

No

+

String

+

Directory for storing the resource.

+

Access the DataArts Studio console and choose Data Development. In the left navigation pane, choose Development > Develop Script. In the directory tree of the script, you can view the created directories. The default directory is the root directory.

+
+
+
+

Example

View resource details.

+
  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/resources/3624d1c3-5df5-4f20-9af9-98eadad6c5f9
    +
+
+
  • Success response
    {
    +	"name": "test",
    +	"type": "jar",
    +	"location": "obs://00000000dlf-test/hadoop-mapreduce-examples-2.4.1.jar",
    +	"dependFiles": ["obs://00000000dlf-test/depend1.jar","obs://00000000dlf-test/depend2.jar"],
    +	"desc": "test",
    +	"directory":"/resource"
    +}
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.6241",
    +    "error_msg":"The resource information does not exist."
    +}
    +
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0105.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0105.html new file mode 100644 index 000000000..63c2b5c9f --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0105.html @@ -0,0 +1,232 @@ + + +

Querying a Resource List

+

Function

This API is used to query a resource list. During the query, you can specify the page number and the maximum number of records on each page.

+
+

URI

  • URI format

    GET /v1/{project_id}/resources?offset={offset}&limit={limit}&resourceName={resourceName}

    +
+
+
  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1 URI parameters

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +

    offset

    +

    No

    +

    Integer

    +

    Start page of the paging list. Default value: 0 The value must be greater than or equal to 0.

    +

    limit

    +

    No

    +

    Integer

    +

    The maximum number of records on each page. The value ranges from 1 to 100.

    +

    Default value: 10

    +

    resourceName

    +

    No

    +

    String

    +

    Name of the resource.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + +
Table 2 Request header parameter

Parameter

+

Mandatory

+

Type

+

Description

+

workspace

+

No

+

String

+

Workspace ID.

+
  • If this parameter is not set, data in the default workspace is queried by default.
  • To query data in other workspaces, this header must be carried.
+
+
+
+

Response

+
+ + + + + + + + + + + + + + + + +
Table 3 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

total

+

Yes

+

Integer

+

The total number of resources.

+

resources

+

Yes

+

List<Resource>

+

A list of resources.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 4 Resource parameters

Parameter

+

Mandatory

+

Type

+

Description

+

id

+

Yes

+

String

+

ID of the resource. The resource ID is used to query the resource.

+

name

+

Yes

+

String

+

Name of the resource. The name contains a maximum of 32 characters, including only letters, numbers, underscores (_), and hyphens (-).

+

type

+

Yes

+

String

+

Resource type.

+
  • archive
  • file
  • jar
+

location

+

Yes

+

String

+

OBS path for storing the resource file. When type is set to jar, location is the path for storing the main JAR package. The path contains a maximum of 256 characters. For example, obs://myBucket/test.jar

+

dependFiles

+

No

+

List<String>

+

JAR package and properties file that the main JAR package depends on. The description contains a maximum of 10,240 characters.

+

desc

+

No

+

String

+

The description contains a maximum of 255 characters.

+

directory

+

No

+

String

+

Directory for storing the resource.

+

Access the DataArts Studio console and choose Data Development. In the left navigation pane, choose Development > Develop Script. In the directory tree of the script, you can view the created directories. The default directory is the root directory.

+
+
+
+

Example

Query a list of resources.

+
  • Request
    GET /v1/b384b9e9ab9b4ee8994c8633aabc9505/resources
    +
+
+
  • Success response

    HTTP status code 200

    +
    {
    +    "total":1,
    +    "resources":[
    +        {
    +            "id":"b384b9e9ab9b4ee8994c8633aabc9505"
    +            "name":"mrResource",
    +            "type":"jar",
    +            "location":"obs://00000000dlf-test/hadoop-mapreduce-examples-2.4.1.jar",
    +            "dependFiles":[
    +                "obs://00000000dlf-test/depend1.jar",
    +                "obs://00000000dlf-test/depend2.jar"
    +            ],
    +            "desc":"test",
    +            "directory":"/resource"
    +        }
    +    ]
    +}
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.3051",
    +    "error_msg":"The request parameter is invalid."
    +}
    +
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0106.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0106.html new file mode 100644 index 000000000..1679b0092 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0106.html @@ -0,0 +1,190 @@ + + +

Importing a Connection

+

Function

This API is used to import one or more connection files from OBS to the Data Development module. Before using this API, store connection files in OBS buckets.

+
+

URI

  • URI format

    POST /v1/{project_id}/connections/import

    +
+
+
  • Parameter description +
    + + + + + + + + + + + +
    Table 1 URI parameter

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    project_id

    +

    Yes

    +

    String

    +

    Project ID. For details about how to obtain a project ID, see Project ID and Account ID.

    +
    +
    +
+

Request

+
+ + + + + + + + + + + + + + + + + + + + + +
Table 2 Request parameters

Parameter

+

Mandatory

+

Type

+

Description

+

path

+

Yes

+

String

+

With OBS deployed: OBS path for storing the connection definition file. For details about the format of the job definition file, see the response message of the exported connection.

+

Without OBS deployed: local path for storing the connection definition file.

+

params

+

No

+

List<Params>

+

Connection parameter. By default, this parameter is left blank.

+

sameNamePolicy

+

No

+

String

+

Policy for specifying how to handle duplicate names. The options are as follows:

+
  • SKIP
  • OVERWRITE

    Default value: SKIP

    +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Table 3 Params connection parameters

Parameter

+

Mandatory

+

Type

+

Description

+

name

+

Yes

+

String

+

Name of a connection.

+

type

+

Yes

+

String

+

Connection type.

+

params

+

No

+

Map<String,Stri

+

ng>

+

Connection parameter. For details about parameter names, see the description of each type of connection configuration item. By default, this parameter is left blank.

+
+
+
+

Response

+
+ + + + + + + + + + + +
Table 4 Response parameters

Parameter

+

Mandatory

+

Type

+

Description

+

taskId

+

Yes

+

String

+

ID of the task. Used to call the API for querying system tasks to obtain the import status.

+
+
+
+

Example

Import a connection.

+
  • Request
    POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/connections/import
    +
    {
    +    "path":"obs://00zyx/2019-07-02/DLF_All_DataConnections.zip",
    +    "sameNamePolicy":"OVERWRITE",
    +    "params":[
    +        {
    +            "name":"DWS",
    +            "type":"DWS",
    +            "params":{
    +                "clusterName":"cluster1"
    +            }
    +        },
    +        {
    +            "name":"hive",
    +            "type":"HIVE",
    +            "params":{
    +                "clusterName":"mrs_ymcc",
    +                "connectionMethod":"agent",
    +                "userName":"admin",
    +                "agentName":"cdm-donotdelete",
    +                "kmsKey":"KMS-42ab"
    +            }
    +        }
    +    ]
    +}
    +
+
+
  • Success response

    HTTP status code 200

    +
    {
    +	"taskId":"008aae2e675933c7016759418e870000"
    +}
    +
  • Failure response

    HTTP status code 400

    +
    {
    +    "error_code":"DLF.0815",
    +    "error_msg":"Fail to read OBS file."
    +}
    +
+

Status Codes

See Status Codes.

+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0127.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0127.html new file mode 100644 index 000000000..8de19cfd2 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0127.html @@ -0,0 +1,22 @@ + + +

DataArts Factory APIs

+

+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0260.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0260.html new file mode 100644 index 000000000..fa0dfb8ea --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0260.html @@ -0,0 +1,21 @@ + + +

Public Data Structures

+
+
+ + + +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0261.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0261.html new file mode 100644 index 000000000..6864c9105 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0261.html @@ -0,0 +1,41 @@ + + +

Link Parameter Description

+
+
+ + + +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0262.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0262.html new file mode 100644 index 000000000..04ee92e90 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0262.html @@ -0,0 +1,248 @@ + + +

Link to a Relational Database

+

Description

By creating a JDBC link, you can extract data from or load data to the following relational databases:
  • Data Warehouse Service
  • RDS for MySQL
  • RDS for PostgreSQL
  • RDS for SQL Server
  • PostgreSQL
  • Microsoft SQL Server
  • IBM Db2
  • SAP HANA
+
+
+

Sample Link

{
+    "links": [
+        {
+            "link-config-values": {
+                "configs": [
+                    {
+                        "inputs": [
+                            {
+                                "name": "linkConfig.databaseType",
+                                "value": "MYSQL"
+                            },
+                            {
+                                "name": "linkConfig.host",
+                                "value": "10.120.205.30"
+                            },
+                            {
+                                "name": "linkConfig.port",
+                                "value": "3306"
+                            },
+                            {
+                                "name": "linkConfig.database",
+                                "value": "DB_name"
+                            },
+                            {
+                                "name": "linkConfig.username",
+                                "value": "username"
+                            },
+                            {
+                                "name": "linkConfig.password",
+                                "value": "Add password here"
+                            },
+                            {
+                                "name": "linkConfig.useAgent",
+                                "value": "false"
+                            },
+                            {
+                                "name": "linkConfig.fetchSize",
+                                "value": "100000"
+                            },
+                            {
+                                "name": "linkConfig.commitSize",
+                                "value": "10000"
+                            },
+                            {
+                                "name": "linkConfig.usingNative",
+                                "value": "false"
+                            },
+                            {
+                                "name": "linkConfig.useSSL",
+                                "value": "false"
+                            }
+                        ],
+                        "name": "linkConfig"
+                    }
+                ]
+            },
+            "name": "mysql_link",
+            "connector-name": "generic-jdbc-connector"
+        }
+    ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.databaseType

+

Yes

+

Enumeration

+

Database type. The options are as follows:

+
  • ORACLE
  • MYSQL
  • SQLSERVER
  • DB2
  • POSTGRESQL
  • DWS
  • DDM
  • SAP HANA
+

linkConfig.host

+

Yes

+

String

+

IP address of the database server

+

linkConfig.port

+

Yes

+

String

+

Port number of the database server

+

linkConfig.databaseconfig

+

No

+

Enumeration

+
Oracle database link type. This parameter is available only when an Oracle link is created. The options are as follows:
  • SERVICENAME: Use SERVICE_NAME to connect to the Oracle database.
  • SID: Use SID to connect to the Oracle database.
+
+

linkConfig.sidname

+

No

+

String

+

Oracle instance ID, which is used to differentiate databases by instances. This parameter is available only when an Oracle link is created and the database link type linkConfig.databaseconfig is set to SID.

+

linkConfig.database

+

No

+

String

+

Database name

+

linkConfig.username

+

Yes

+

String

+

Username

+

linkConfig.password

+

Yes

+

String

+

Password

+

linkConfig.useAgent

+

Yes

+

Boolean

+

Whether to obtain data from the data source through an agent

+

linkConfig.fetchSize

+

No

+

String

+

Number of data rows obtained each time

+

linkConfig.commitSize

+

No

+

String

+

Number of data rows submitted in each request

+

linkConfig.usingNative

+

No

+

Boolean

+

Whether to use the local API acceleration function of the database

+

When creating a MySQL link, you can use the LOAD DATA function of MySQL to accelerate data import and improve the performance of importing data to the MySQL database.

+

linkConfig.isRds

+

No

+

Boolean

+

Whether RDS is supported. The default value true is used for cloud databases and false is used for other databases.

+

linkConfig.useSSL

+

No

+

Boolean

+

Whether to enable SSL encrypted transmission for RDS. This parameter is available only when you create a DWS connection.

+

linkConfig.jdbcProperties

+

No

+

Map

+

Link attribute, which specifies the JDBC connector attributes of the data source. For details about how to configure the link attributes, see the JDBC connector description of the corresponding database.

+

linkConfig.version

+

No

+

Enumeration

+

Oracle database version. This parameter is available only when you create an Oracle link. The options are as follows:

+
  • HIGH_VERSION: Select this value if the Oracle database version is later than 12.1.
  • MED_VERSION: Select this value if the Oracle database version is 12.1.
  • LOW_VERSION: Select this value if the Oracle database version is earlier than 12.1.
+

If error message "java.sql.SQLException: Protocol violation" is displayed, select another option.

+

dialect.identifierEnclose

+

No

+

String

+

Reference identifier, which is the delimiter between the referenced table names or column names. For details, see the product documentation of the corresponding database.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0263.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0263.html new file mode 100644 index 000000000..c9861d053 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0263.html @@ -0,0 +1,110 @@ + + +

Link to OBS

+

Description

By creating an OBS link, you can extract files from or load files to OBS. Files in CSV, JSON, and binary format are supported.

+
+

Sample Link

{
+    "links": [
+        {
+            "link-config-values": {
+                "configs": [
+                    {
+                        "inputs": [
+                            {
+                                "name": "linkConfig.storageType",
+                                "value": "OBS"
+                            },
+                            {
+                                "name": "linkConfig.server",
+                                "value": "10.121.16.183"
+                            },
+                            {
+                                "name": "linkConfig.port",
+                                "value": "443"
+                            },
+                            {
+                                "name":"linkConfig.accessKey",
+                                "value": "RSO6TTEZMJ6TTFBBAACE"
+                            },
+                            {
+                                "name":"linkConfig.securityKey",
+                                "value":"Add password here"
+                            }
+                        ],
+                        "name": "linkConfig"
+                    }
+                ]
+            },
+            "name": "obs_link",
+            "connector-name": "obs-connector"
+        }
+    ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.storageType

+

Yes

+

String

+

Storage class of an object

+

linkConfig.server

+

Yes

+

String

+

Endpoint of the OBS server. You can enter a bucket-level domain name.

+

linkConfig.port

+

Yes

+

String

+

Data transmission port. The HTTPS port number is 443 and the HTTP port number is 80.

+

linkConfig.accessKey

+

Yes

+

String

+

AK

+

linkConfig.securityKey

+

Yes

+

String

+

SK

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0266.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0266.html new file mode 100644 index 000000000..4e7fd3ae6 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0266.html @@ -0,0 +1,191 @@ + + +

Link to HDFS

+

Description

By creating an HDFS link, you can extract files from or load files to MRS, FusionInsight HD, or Apache Hadoop. Files in CSV, Parquet, and binary formats are supported.

+
+

Sample Link

{
+    "links": [
+        {
+            "link-config-values": {
+                "configs": [
+                    {
+                        "inputs": [
+                            {
+                                "name": "linkConfig.hadoopType",
+                                "value": "FusionInsight HD"
+                            },
+                            {
+                                "name": "linkConfig.host",
+                                "value": "10.120.205.143"
+                            },
+                            {
+                                "name": "linkConfig.casPort",
+                                "value": "20009"
+                            },
+                            {
+                                "name": "linkConfig.port",
+                                "value": "28443"
+                            },
+                            {
+                                "name": "linkConfig.authType",
+                                "value": "KERBEROS"
+                            },
+                            {
+                                "name": "linkConfig.user",
+                                "value": "admin"
+                            },
+                            {
+                                "name": "linkConfig.password",
+                                "value": "Add password here"
+                            },
+                            {
+                                "name": "linkConfig.runMode",
+                                "value": "STANDALONE"
+                            }
+                        ],
+                        "name": "linkConfig"
+                    }
+                ]
+            },
+            "name": "hdfslink",
+            "connector-name": "hdfs-connector"
+        }
+    ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.hadoopType

+

Yes

+

Enumeration

+

Hadoop type. The options are as follows:

+
  • MRS: link to HDFS of MRS
  • FusionInsight HD: link to HDFS of FusionInsight HD
  • Apache Hadoop: link to HDFS of Apache Hadoop
+

linkConfig.uri

+

No

+

String

+

NameNode URI required for the link to Apache Hadoop. The format is ip:port.

+

linkConfig.host

+

No

+

String

+

IP address of Manager required for the link to MRS or FusionInsight HD

+

linkConfig.port

+

No

+

String

+

Port number of Manager required for the link to FusionInsight HD

+

linkConfig.casPort

+

No

+

String

+

Port number of CAS Server that connects to FusionInsight HD required for the link to FusionInsight HD

+

linkConfig.user

+

No

+

String

+

Username for logging in to Manager. This parameter is not required if the cluster configuration is used.

+

linkConfig.password

+

No

+

String

+

Password for logging in to Manager. This parameter is not required if the cluster configuration is used.

+

linkConfig.authType

+

No

+

Enumeration

+
Authentication method. The options are as follows:
  • Simple: for non-security mode
  • Kerberos: for security mode
+
+

linkConfig.principal

+

No

+

String

+

Account principal required for Kerveros authentication. You can contact the administrator to obtain the account. Before using the cluster configuration, you must set this parameter in cluster configuration management.

+

linkConfig.keytab

+

No

+

FileContent

+

Local absolute path of the keytab file required for Kerveros authentication. You can also contact the administrator to obtain the file. Before using the cluster configuration, you must set this parameter in cluster configuration management.

+

linkConfig.runMode

+

No

+

Enumeration

+
Running mode of the HDFS link. The options are as follows:
  • EMBEDDED: The link instance runs with CDM. This mode delivers better performance.
  • STANDALONE: The link instance runs in an independent process. If CDM needs to connect to multiple Hadoop data sources (MRS, Hadoop, or CloudTable) with both Kerberos and Simple authentication methods, STANDALONE prevails.

    If STANDALONE is selected, CDM can migrate data between HDFSs of multiple MRS clusters.

    +
  • Agent: The link instance runs on an agent.

    If Agent is not used, and the CDM cluster connects to two or more clusters with Kerberos authentication enabled and the same realm, only one cluster can be connected in EMBEDDED mode, and the other clusters must be in STANDALONE mode.

    +
+
+

+

linkConfig.properties

+

No

+

Map

+

Properties. You can add configuration properties of the client. Each property must contain a name and a value.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0267.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0267.html new file mode 100644 index 000000000..38f475fa7 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0267.html @@ -0,0 +1,213 @@ + + +

Link to HBase

+

Description

By creating an HBase link, you can extract data from or load data to HBase of MRS, FusionInsight HD, and Apache Hadoop.

+
+

Sample Link

{
+  "links": [
+    {
+      "link-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "linkConfig.hbaseType",
+                "value": "MRS"
+              },
+              {
+                "name": "linkConfig.host",
+                "value": "192.168.0.34"
+              },
+              {
+                "name": "linkConfig.user",
+                "value": "zephyr"
+              },
+              {
+                "name": "linkConfig.password",
+                "value": "Add password here."
+              },
+              {
+                "name": "linkConfig.authType",
+                "value": "KERBEROS"
+              },
+              {
+                "name": "linkConfig.serviceType",
+                "value": "HDFS"
+              },
+              {
+                "name": "linkConfig.hBaseVersion",
+                "value": "HBASE_2_X"
+              },
+              {
+                "name": "linkConfig.runMode",
+                "value": "EMBEDDED"
+              }
+            ],
+            "name": "linkConfig"
+          }
+        ],
+        "extended-configs": {
+          "name": "linkConfig.extendedFields",
+          "value": "eyL1c2VDbHVzdGVyQ29uZmlnIjoiZmFsc2UiJCLjbHVzdGVyQ29uZmlnUHLpbmNpcGFsIjoiemVwaHlyIn0="
+        }
+      },
+      "name": "mrs_hbase_dlf",
+      "connector-name": "hbase-connector"
+    }
+  ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.hbaseType

+

Yes

+

Enumeration

+

HBase type. The options are as follows:

+
  • CloudTable: link to CloudTable Service (CloudTable)
  • MRS: link to HBase of MRS
  • FusionInsight HD: link to HBase of FusionInsight HD
  • Apache Hadoop: link to HBase of Apache Hadoop
+

linkConfig.uri

+

No

+

String

+

NameNode URI required for the link to Apache Hadoop. The format is ip:port.

+

llinkConfig.host

+

No

+

String

+

IP address of Manager required for the link to MRS or FusionInsight HD

+

linkConfig.port

+

No

+

String

+

Port number of Manager required for the link to FusionInsight HD

+

linkConfig.casPort

+

No

+

String

+

Port number of CAS Server that connects to FusionInsight HD required for the link to FusionInsight HD

+

linkConfig.hBaseVersion

+

Yes

+

Enumeration

+

HBase version

+
  • HBASE_1_X
  • HBASE_2_X
+

linkConfig.user

+

No

+

String

+

Username for logging in to Manager. This parameter is not required if the cluster configuration is used.

+

linkConfig.password

+

No

+

String

+

Password for logging in to Manager. This parameter is not required if the cluster configuration is used.

+

linkConfig.authType

+

No

+

Enumeration

+
Authentication method. The options are as follows:
  • Simple: for non-security mode
  • Kerberos: for security mode
+
+

linkConfig.principal

+

No

+

String

+

Account principal required for Kerveros authentication. You can contact the administrator to obtain the account.

+

linkConfig.keytab

+

No

+

FileContent

+

Local absolute path of the keytab file required for Kerveros authentication. You can also contact the administrator to obtain the file.

+

linkConfig.serviceType

+

No

+

String

+

Service type Currently, HDFS and HBase are supported.

+

linkConfig.runMode

+

No

+

Enumeration

+
This parameter is used only when the HBase version is HBase_2_X. Possible values are:
  • EMBEDDED: The link instance runs with CDM. This mode delivers better performance.
  • STANDALONE: The link instance runs in an independent process. If CDM needs to connect to multiple Hadoop data sources (MRS, Hadoop, or CloudTable) with both Kerberos and Simple authentication methods, STANDALONE prevails.

    If STANDALONE is selected, CDM can migrate data between HDFSs of multiple MRS clusters.

    +
  • Agent: The link instance runs on an agent.

    If Agent is not used, and the CDM cluster connects to two or more clusters with Kerberos authentication enabled and the same realm, only one cluster can be connected in EMBEDDED mode, and the other clusters must be in STANDALONE mode.

    +
+
+

linkConfig.properties

+

No

+

Map

+

Properties. You can add configuration properties of the client. Each property must contain a name and a value.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0268.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0268.html new file mode 100644 index 000000000..62f806b4d --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0268.html @@ -0,0 +1,138 @@ + + +

Link to CloudTable

+

Description

By creating a CloudTable link, you can extract data from or load data to CloudTable.

+
+

Sample Link

{
+  "links": [
+    {
+      "link-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "linkConfig.hbaseType",
+                "value": "CloudTable"
+              },
+              {
+                "name": "linkConfig.zookeeperQuorum",
+                "value": "cloudtable-pass-zk2-bae54VGN.cloudtable.com:2181,cloudtable-pass-zk1-Fu828so2.cloudtable.com:2181"
+              },
+              {
+                "name": "linkConfig.iamAuth",
+                "value": "true"
+              },
+              {
+                "name": "linkConfig.cloudtableUser",
+                "value": "zane"
+              },
+              {
+                "name": "linkConfig.accessKey",
+                "value": "GRC2WR0IxxxxxxxYLWU2"
+              },
+              {
+                "name": "linkConfig.securityKey",
+                "value": "Add password here"
+              },
+              {
+                "name": "linkConfig.runMode",
+                "value": "EMBEDDED"
+              }
+            ],
+            "name": "linkConfig"
+          }
+        ]
+      },
+      "name": "cloudtablelink",
+      "connector-name": "hbase-connector"
+    }
+  ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.hbaseType

+

Yes

+

Enumeration

+

HBase type. The options are as follows:

+
  • CloudTable: link to CloudTable
  • MRS: link to MRS
  • FusionInsight HD: link to FusionInsight HD
  • Apache Hadoop: link to Apache Hadoop
+

linkConfig.zookeeperQuorum

+

Yes

+

String

+

ZooKeeper link of CloudTable. This parameter is mandatory for the CloudTable link.

+

linkConfig.iamAuth

+

Yes

+

Boolean

+

If you choose IAM for identity authentication, enter the username, AK, and SK.

+

linkConfig.runMode

+

Yes

+

Enumeration

+

Running mode of the HBase link. The options are as follows:

+
  • EMBEDDED: The link instance runs with CDM. This mode delivers better performance.
  • STANDALONE: The link instance runs in an independent process. If CDM needs to connect to multiple Hadoop data sources (MRS, Hadoop, or CloudTable) with both Kerberos and Simple authentication methods, STANDALONE prevails.
+

linkConfig.cloudtableUser

+

Yes

+

String

+

Username for accessing the CloudTable cluster

+

linkConfig.accessKey

+

Yes

+

String

+

AK for accessing the CloudTable cluster

+

linkConfig.securityKey

+

Yes

+

String

+

SK for accessing the CloudTable cluster

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0269.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0269.html new file mode 100644 index 000000000..957445202 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0269.html @@ -0,0 +1,191 @@ + + +

Link to Hive

+

Description

By creating a Hive link, you can extract data from or load data to Hive of MRS.

+
+

Sample Link

{
+  "links": [
+    {
+      "link-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "linkConfig.host",
+                "value": "10.120.205.230"
+              },
+			  {
+                "name": "linkConfig.authType",
+                "value": "KERBEROS"
+              },
+              {
+                "name": "linkConfig.user",
+                "value": "cdm"
+              },
+              {
+                "name": "linkConfig.password",
+                "value": "Add password here"
+              } 
+            ],
+            "name": "linkConfig"
+          }
+        ]
+      },
+      "name": "hive_link",
+      "connector-name": "hive-connector"
+    }
+  ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

llinkConfig.host

+

Yes

+

String

+

IP address of MRS Manager

+

linkConfig.authType

+

Yes

+

Enumeration

+
Authentication method of MRS. The options are as follows:
  • SIMPLE: for non-security mode
  • KERBEROS: for security mode
+
+

linkConfig.principal

+

No

+

String

+

Account principal required for Kerveros authentication. You can contact the administrator to obtain the account. Before using the cluster configuration, you must set this parameter in cluster configuration management.

+

linkConfig.keytab

+

No

+

FileContent

+

Local absolute path of the keytab file required for Kerveros authentication. You can also contact the administrator to obtain the file. Before using the cluster configuration, you must set this parameter in cluster configuration management.

+

linkConfig.hiveVersion

+

Yes

+

Enumeration

+

Hive version

+
  • HIVE_1_X
  • HIVE_3_X
+

linkConfig.user

+

No

+

String

+

Username for logging in to Manager. This parameter is not required if the cluster configuration is used.

+

linkConfig.password

+

No

+

String

+

Password for logging in to Manager. This parameter is not required if the cluster configuration is used.

+

linkConfig.uri

+

No

+

String

+

NameNode URI required for the link to Apache Hadoop. The format is ip:port.

+

linkConfig.hiveMsUris

+

No

+

String

+

Hive metadata address for connecting to Apache Hadoop. For details, see the hive.metastore.uris configuration item. Example: thrift://host-192-168-1-212:9083

+

linkConfig.obsSupport

+

Yes

+

Boolean

+

The server must support OBS storage. When creating a Hive table, you can store the table in OBS.

+

linkConfig.runMode

+

Yes

+

Enumeration

+

This parameter is used only when the Hive version is HIVE_3_X. Possible values are:

+
  • EMBEDDED: The link instance runs with CDM. This mode delivers better performance.
  • STANDALONE: The link instance runs in an independent process. If CDM needs to connect to multiple Hadoop data sources (MRS, Hadoop, or CloudTable) with both Kerberos and Simple authentication modes, select STANDALONE or configure different agents.

    Note: The STANDALONE mode is used to solve the version conflict problem. If the connector versions of the source and destination ends of the same link are different, a JAR file conflict occurs. In this case, you need to place the source or destination end in the STANDALONE process to prevent the migration failure caused by the conflict.

    +
+

linkConfig.accessKey

+

No

+

String

+

AK This parameter is mandatory when OBS is supported.

+

linkConfig.securityKey

+

No

+

String

+

SK This parameter is mandatory when OBS is supported.

+

linkConfig.properties

+

No

+

Map

+

Properties. You can add configuration properties of the client. Each property must contain a name and a value.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0270.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0270.html new file mode 100644 index 000000000..cc8965a51 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0270.html @@ -0,0 +1,98 @@ + + +

Link to an FTP or SFTP Server

+

Description

By creating an FTP or SFTP link, you are able to extract files from or load files to the FTP or SFTP server. Files in CSV, JSON, and binary format are supported.

+
+

Sample Link

{
+    "links": [
+        {
+            "link-config-values": {
+                "configs": [
+                    {
+                        "inputs": [
+                            {
+                                "name": "linkConfig.server",
+                                "value": "10.120.85.167"
+                            },
+                            {
+                                "name": "linkConfig.port",
+                                "value": "22"
+                            },
+                            {
+                                "name": "linkConfig.username",
+                                "value": "username"
+                            },
+                            {
+                                "name": "linkConfig.password",
+                                "value": "Add password here"
+                            }
+                        ],
+                        "name": "linkConfig"
+                    }
+                ]
+            },
+            "name": "sftp_link",
+            "connector-name": "sftp-connector"
+        }
+    ]
+}
+
+

Link Parameters

Parameters for creating the FTP or SFTP link are the same.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.server

+

Yes

+

String

+

IP address of the FTP or SFTP server

+

linkConfig.port

+

Yes

+

String

+

Port number of the FTP or SFTP server

+

linkConfig.username

+

Yes

+

String

+

Username for logging in to the FTP or SFTP server

+

linkConfig.password

+

Yes

+

String

+

Password for logging in to the FTP or SFTP server

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0271.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0271.html new file mode 100644 index 000000000..a53040a11 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0271.html @@ -0,0 +1,97 @@ + + +

Link to MongoDB

+

Description

By creating a MongoDB link, you can extract data from or load data to MongoDB.

+
+

Sample Link

{
+    "links": [
+        {
+            "link-config-values": {
+                "configs": [
+                    {
+                        "inputs": [
+                            {
+                                "name": "linkConfig.serverList",
+                                "value": "10.120.84.149:27017"
+                            },
+                            {
+                                "name": "linkConfig.database",
+                                "value": "DB_name"
+                            },
+                            {
+                                "name": "linkConfig.userName",
+                                "value": "username"
+                            },
+                            {
+                                "name": "linkConfig.password",
+                                "value": "Add password here"
+                            }
+                        ],
+                        "name": "linkConfig"
+                    }
+                ]
+            },
+            "name": "mongo_link",
+            "connector-name": "mongodb-connector"
+        }
+    ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.serverList

+

Yes

+

String

+

Server IP address list in host1:port1;host2:port2 format

+

linkConfig.database

+

Yes

+

String

+

Name of the MongoDB database

+

linkConfig.userName

+

Yes

+

String

+

Username for logging in to the MongoDB server

+

linkConfig.password

+

Yes

+

String

+

Password for logging in to the MongoDB server

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0272.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0272.html new file mode 100644 index 000000000..9479d9df4 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0272.html @@ -0,0 +1,98 @@ + + +

Link to Redis/DCS (to Be Brought Offline)

+

Description

By creating a Redis link, you can extract data from or load data to the Redis server. By creating a DCS link, you can load data to Data Cache Service (DCS), but not extract data for DCS. The data can be stored in string or hash format.

+
+

Sample Link

{
+    "links": [
+        {
+            "link-config-values": {
+                "configs": [
+                    {
+                        "inputs": [
+                            {
+                                "name": "linkConfig.deploymentMode",
+                                "value": "Cluster"
+                            },
+                            {
+                                "name": "linkConfig.serverlist",
+                                "value": "10.120.84.149:7300"
+                            },
+                            {
+                                "name": "linkConfig.password",
+                                "value": "Add password here"
+                            },
+                            {
+                                "name": "linkConfig.dbIndex",
+                                "value": "0"
+                            }
+                        ],
+                        "name": "linkConfig"
+                    }
+                ]
+            },
+            "name": "redis_link",
+            "connector-name": "redis-connector"
+        }
+    ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.deploymentMode

+

Yes

+

Enumeration

+

Redis deployment mode. The options are as follows:

+
  • Single: single-node deployment
  • Cluster: cluster deployment
+

linkConfig.serverlist

+

Yes

+

String

+

Server IP address list in host1:port1;host2:port2 format

+

linkConfig.password

+

Yes

+

String

+

Password for logging in to the Redis server

+

linkConfig.dbIndex

+

Yes

+

String

+

Redis database index

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0274.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0274.html new file mode 100644 index 000000000..d61fcb4b4 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0274.html @@ -0,0 +1,134 @@ + + +

Link to Kafka

+

Description

By creating a Kafka link, you are able to access open source Kafka and migrate data from Kafka to other data sources as required. Currently, only data export from Kafka is supported.

+
+

Sample Link

  {
+  "links": [
+    {
+      "link-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "linkConfig.hadoopType",
+                "value": "MRS"
+              },
+              {
+                "name": "linkConfig.host",
+                "value": "192.168.1.147"
+              },
+              {
+                "name": "linkConfig.user",
+                "value": "liuhuan1"
+              },
+              {
+                "name": "linkConfig.password",
+                "value": "Add password here."
+              },
+              {
+                "name": "linkConfig.authType",
+                "value": "KERBEROS"
+              }
+            ],
+            "name": "linkConfig"
+          }
+        ],
+        "extended-configs": {
+          "name": "linkConfig.extendedFields",
+          "value": "e30="
+        }
+      },
+      "name": "mrs_kafka_link",
+      "connector-name": "kafka-connector"
+    }
+  ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.hadoopType

+

Yes

+

Enumeration

+

Hadoop type. The options are as follows:

+
  • MRS: link to Kafka of MRS
  • Apache Kafka: link to Kafka of Apache
+

linkConfig.brokerList

+

Yes

+

String

+

This parameter is mandatory for Apache Kafka links. Kafka broker list in host1:port1,host2:port2 format

+

llinkConfig.host

+

Yes

+

String

+

Floating IP address of MRS Manager. Click Select next to the Manager IP text box to select an MRS cluster. CDM automatically fills in the authentication information.

+

linkConfig.user

+

Yes

+

String

+

Username used for logging in to MRS Manager.

+

linkConfig.password

+

Yes

+

String

+

Password used for logging in to MRS Manager.

+

linkConfig.authType

+

Yes

+

Enumeration

+
Authentication method. The options are as follows:
  • Simple: for non-security mode
  • Kerberos: for security mode
+
+

linkConfig.properties

+

No

+

Map

+

Properties. You can add configuration properties of the client. Each property must contain a name and a value.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0276.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0276.html new file mode 100644 index 000000000..b96f5da1e --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0276.html @@ -0,0 +1,114 @@ + + +

Link to Elasticsearch/Cloud Search Service

+

Description

By creating an Elasticsearch link, you can extract data from or load data to the Elasticsearch server or Cloud Search Service.

+
+

Sample Link

{
+  "links": [
+    {
+      "link-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "linkConfig.host",
+                "value": "192.168.0.50:9200;192.168.0.62:9200"
+              },
+              {
+                "name": "linkConfig.safemode",
+                "value": "true"
+              },
+              {
+                "name": "linkConfig.user",
+                "value": "admin"
+              },
+              {
+                "name": "linkConfig.password",
+                "value": "Add password here."
+              },
+              {
+                "name": "linkConfig.linkType",
+                "value": "CSS"
+              }
+            ],
+            "name": "linkConfig"
+          }
+        ],
+        "extended-configs": {
+          "name": "linkConfig.extendedFields",
+          "value": "eyLodHRwc0FjY2VzcyI6InRydWUifQ=="
+        }
+      },
+      "name": "css-cdm-autotest-nodel",
+      "connector-name": "elasticsearch-connector"
+    }
+  ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.host

+

Yes

+

String

+

List of one or more Elasticsearch servers, including the port number. The format is ip:port. Use semicolons (;) to separate multiple IP addresses. For example, 192.168.0.1:9200;192.168.0.2:9200.

+

linkConfig.safemode

+

No

+

Boolean

+

If you select the security authentication mode, you must enter the username and password, and choose whether to enable HTTPS access.

+

linkConfig.user

+

No

+

String

+

For Elasticsearch that supports username and password authentication, configure the username and password when creating a link.

+

linkConfig.password

+

No

+

String

+

Password for accessing the Elasticsearch server

+

linkConfig.linkType

+

Yes

+

String

+

Link type, which is used to distinguish the Elasticsearch link from the Cloud Search Service link

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0277.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0277.html new file mode 100644 index 000000000..5b7269de9 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0277.html @@ -0,0 +1,97 @@ + + +

Link to DLI

+

Description

By creating a DLI link, you can import data to DLI. Currently, you cannot export data from DLI using CDM.

+
+

Sample Link

{
+    "links": [
+        {
+            "link-config-values": {
+                "configs": [
+                    {
+                        "inputs": [
+                            {
+                                "name": "linkConfig.ak",
+                                "value": "GRC2WR0IDC6NGROYLWU2"
+                            },
+                            {
+                                "name": "linkConfig.sk",
+                                "value": "Add password here"
+                            },
+                            {
+                                "name": "linkConfig.region",
+                                "value": ""
+                            },
+                            {
+                                "name": "linkConfig.projectId",
+                                "value": "c48475ce8e174a7a9f775706a3d5ebe2"
+                            }
+                        ],
+                        "name": "linkConfig"
+                    }
+                ]
+            },
+            "name": "dli",
+            "connector-name": "dli-connector"
+        }
+    ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.ak

+

Yes

+

String

+

AK for accessing the DLI database

+

linkConfig.sk

+

Yes

+

String

+

SK for accessing the DLI database

+

linkConfig.region

+

Yes

+

String

+

Region where DLI resides

+

linkConfig.projectId

+

Yes

+

String

+

Project ID of the DLI service

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0278.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0278.html new file mode 100644 index 000000000..588db442b --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0278.html @@ -0,0 +1,108 @@ + + +

Link to CloudTable OpenTSDB

+

Description

By creating an OpenTSDB link, you can extract data from and load data to CloudTable OpenTSDB.

+
+

Sample Link

{
+  "links": [
+    {
+      "link-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "linkConfig.openTSDBQuorum",
+                "value": "opentsdb-sp8afz7bgbps5ur.cloudtable.com:4242"
+              },
+              {
+                "name": "linkConfig.securityMode",
+                "value": "UNSAFE"
+              }
+            ],
+            "name": "linkConfig"
+          }
+        ]
+      },
+      "name": "opentsdb",
+      "connector-name": "opentsdb-connector"
+    }
+  ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.openTSDBQuorum

+

Yes

+

String

+

ZooKeeper Link of OpenTSDB

+

linkConfig.securityMode

+

Yes

+

String

+

Security or UNSAFE mode

+

If you select Security, enter the project ID, username, and AK/SK.

+

linkConfig.user

+

No

+

String

+

Username for accessing CloudTable

+

linkConfig.ak

+

No

+

String

+

AK for accessing CloudTable

+

linkConfig.sk

+

No

+

String

+

SK for accessing CloudTable

+

linkConfig.projectId

+

No

+

String

+

Project ID of CloudTable

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0280.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0280.html new file mode 100644 index 000000000..2f3c0990e --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0280.html @@ -0,0 +1,108 @@ + + +

Link to DMS Kafka

+

Description

By creating a DMS Kafka link, you can connect to Kafka Basic or Kafka Platinum on DMS. Currently, you can only export data from DMS Kafka to Cloud Search Service.

+
+

Sample Link

{
+  "links": [
+    {
+      "link-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "linkConfig.kafkaType",
+                "value": "Platinum"
+              },
+              {
+                "name": "linkConfig.brokerList",
+                "value": "100.85.121.112:9094,100.85.220.134:9094,100.85.127.232:9094"
+              },
+              {
+                "name": "linkConfig.isPlatinumInstance",
+                "value": "false"
+              }
+            ],
+            "name": "linkConfig"
+          }
+        ],
+        "extended-configs": {
+          "name": "linkConfig.extendedFields",
+          "value": "e30="
+        }
+      },
+      "name": "dms_kafka",
+      "connector-name": "dms-kafka-connector"
+    }
+  ]
+}
+
+

Link Parameters

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

linkConfig.kafkaType

+

Yes

+

Enumeration

+

DMS Kafka edition. Currently, only the Platinum edition is available.

+
  • Basic: DMS Kafka Basic
  • Platinum: DMS Kafka Platinum
+

linkConfig.brokerList

+

Yes

+

String

+

The DMS endpoint is in host1:port1,host2:port2 format.

+

linkConfig.isPlatinumInstance

+

Yes

+

Boolean

+

Whether to enable SSL authentication when a client connects to a Kafka premium instance.

+

If Kafka SASL_SSL is enabled, data will be encrypted before transmission for higher security, but performance will suffer.

+

linkConfig.user

+

No

+

String

+

Username for connecting to DMS Kafka. This parameter is displayed when Kafka SASL_SSL is enabled.

+

linkConfig.password

+

No

+

String

+

Password for connecting to DMS Kafka. This parameter is displayed when Kafka SASL_SSL is enabled.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0281.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0281.html new file mode 100644 index 000000000..ef44da834 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0281.html @@ -0,0 +1,39 @@ + + +

Source Job Parameters

+
+
+ + + +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0282.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0282.html new file mode 100644 index 000000000..c6e306eeb --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0282.html @@ -0,0 +1,152 @@ + + +

From a Relational Database

+

Sample JSON File

"from-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "fromJobConfig.useSql",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.schemaName",
+                "value": "rf_database"
+              },
+              {
+                "name": "fromJobConfig.tableName",
+                "value": "rf_from"
+              },
+              {
+                "name": "fromJobConfig.columnList",
+                "value": "AA&BB"
+              },
+              {
+                "name": "fromJobConfig.incrMigration",
+                "value": "false"
+              }
+            ],
+            "name": "fromJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

fromJobConfig.useSql

+

Yes

+

Boolean

+

Whether to use the customized SQL statement to export data when exporting relational database data

+

fromJobConfig.sql

+

No

+

String

+

Customized SQL statement. CDM executes the SQL statement to export data.

+

fromJobConfig.schemaName

+

Yes

+

String

+

Database mode or tablespace. For example, public.

+
NOTE:
The parameter value can contain wildcard characters (*), which is used to export all databases whose names start with a certain prefix or end with a certain suffix. The examples are as follows:
  • SCHEMA* indicates that all databases whose names starting with SCHEMA are exported.
  • *SCHEMA indicates that all databases whose names ending with SCHEMA are exported.
  • *SCHEMA* indicates that all databases whose names containing SCHEMA are exported.
+
+
+

fromJobConfig.tableName

+

Yes

+

String

+

Table name. For example, TBL_EXAMPLE.

+
NOTE:
The table name can contain wildcard characters (*), which is used to export all tables whose names start with a certain prefix or end with a certain suffix. The number and types of fields in the tables must be the same. The examples are as follows:
  • table* indicates that all tables whose names starting with table are exported.
  • *table indicates that all tables whose names ending with table are exported.
  • *table* indicates that all tables whose names containing table are exported.
+
+
+

fromJobConfig.whereClause

+

No

+

String

+

WHERE clause used to specify the data to be extracted. If no WHERE clause is configured, the entire table will be extracted. For example, age > 18 and age <= 60.

+

fromJobConfig.columnList

+

No

+

String

+

List of fields to be extracted. Use & to separate field names. For example, id&gid&name.

+

fromJobConfig.partitionColumn

+

No

+

String

+

Partition field to be extracted, by which a job is split in multiple sub-jobs executed concurrently. For example, id.

+

fromJobConfig.incrMigration

+

No

+

Boolean

+

Whether to enable incremental data migration using MySQL Binlog. This can be only used for table/file migration from MySQL databases to GaussDB(DWS).

+

If this function is enabled, data in the source table and destination table can be synchronized in real time. Each MySQL link or source table supports only one incremental migration job.

+

fromJobConfig.usePartition

+

No

+

Boolean

+

When data is exported from the Oracle database, data can be extracted from each partition in a partitioned table. When this function is enabled, you can use the fromJobConfig.partitionList parameter to specify the partitions in the Oracle table. This function does not support non-partitioned tables.

+

fromJobConfig.partitionList

+

No

+

String

+

Oracle table partitions to be migrated. Separate multiple partitions with ampersands (&). If you do not set this parameter, all partitions will be migrated.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0283.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0283.html new file mode 100644 index 000000000..dc5f29e21 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0283.html @@ -0,0 +1,331 @@ + + +

From Object Storage

+

Sample JSON File

"from-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "fromJobConfig.bucketName",
+                "value": "cdm-est"
+              },
+              {
+                "name": "fromJobConfig.inputDirectory",
+                "value": "/obsfrom/varchar.txt"
+              },
+              {
+                "name": "fromJobConfig.inputFormat",
+                "value": "CSV_FILE"
+              },
+              {
+                "name": "fromJobConfig.columnList",
+                "value": "1&2&3"
+              },
+              {
+                "name": "fromJobConfig.fieldSeparator",
+                "value": ","
+              },
+              {
+                "name": "fromJobConfig.quoteChar",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.regexSeparator",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.firstRowAsHeader",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.encodeType",
+                "value": "UTF-8"
+              },
+              {
+                "name": "fromJobConfig.fromCompression",
+                "value": "NONE"
+              },
+              {
+                "name": "fromJobConfig.splitType",
+                "value": "FILE"
+              }
+            ],
+            "name": "fromJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

fromJobConfig.bucketName

+

Yes

+

String

+

Bucket name

+

fromJobConfig.inputDirectory

+

Yes

+

String

+

Path for storing files to be extracted. You can enter a maximum of 50 file paths, which are separated by vertical bars (|). You can also customize the separators. For example, FROM/example.csv|FROM/b.txt.

+

fromJobConfig.inputFormat

+

Yes

+

Enumeration

+
File format required for data transmission. Currently, the following file formats are supported:
  • CSV_FILE: CSV format, used to migrate files to data tables
  • JSON_FILE: JSON format, used to migrate files to data tables
  • BINARY_FILE: Files (even not in binary format) will be directly transferred without resolution. It is applicable to file copy.
+
+

If you select BINARY_FILE, the migration destination must also be a file system.

+

fromJobConfig.lineSeparator

+

No

+

String

+

Line feed character in the file. For example, \n. By default, \n, \r, or \r\n is automatically identified.

+

fromJobConfig.columnList

+

No

+

String

+

Numbers of columns to be extracted. Use & to separate column numbers in ascending order. For example, 1&3&5.

+

fromJobConfig.regexSeparator

+

No

+

Boolean

+

Whether to use the regular expression to separate fields. This parameter is valid only when the file format is CSV_FILE.

+

fromJobConfig.regex

+

No

+

String

+

Regular expression. This parameter is valid only when the regular expression is used to separate fields.

+

fromJobConfig.fieldSeparator

+

No

+

String

+

Field delimiter. This parameter is valid only when the file format is CSV_FILE. The default value is ,.

+

fromJobConfig.quoteChar

+

No

+

Boolean

+

Whether to use the encircling symbol. If this parameter is set to true, the field delimiters in the encircling symbol are regarded as a part of the string value. Currently, the default encircling symbol of CDM is double quotation mark (").

+

fromJobConfig.firstRowAsHeader

+

No

+

Boolean

+

Whether to regard the first line as the heading line. This parameter is valid only when the file format is CSV_FILE. When you migrate a CSV file to a table, CDM writes all data to the table by default. If this parameter is set to true, CDM uses the first line of the CSV file as the heading line and does not write the line to the destination table.

+

fromJobConfig.fromCompression

+

No

+

Enumeration

+
Compression format. This parameter is valid only when the file format is CSV_FILE or JSON. The options are as follows:
  • NONE: Files in all formats are transferred.
  • GZIP: Files in gzip format are transferred.
  • ZIP: Files in Zip format are transferred.
+
+

fromJobConfig.jsonReferenceNode

+

No

+

String

+

Reference node. This parameter is valid when the file format is JSON_FILE. Resolve data on the JSON node. If the data corresponding to the node is a JSON array, the system extracts data from the array in the same mode. Nested JSON nodes are separated by periods (.). For example, data.list.

+

fromJobConfig.encodeType

+

No

+

String

+

Encoding type. For example, UTF_8 or GBK.

+

fromJobConfig.fromFileOpType

+

No

+

Enumeration

+

Source file processing mode. After a job is completed, operations on the source file can be performed. The source file can be renamed or deleted.

+

fromJobConfig.useMarkerFile

+

No

+

Boolean

+

Whether to start a job by a marker file. A job is started only when a marker file for starting the job exists in the source path. Otherwise, the job will be suspended for a period of time specified by fromJobConfig.waitTime.

+

fromJobConfig.markerFile

+

No

+

String

+

Name of the marker file for starting a job. After a marker file is specified, the task is executed only when the file exists in the source path. If the marker file is not specified, this function is disabled by default. For example, ok.txt.

+

fromJobConfig.waitTime

+

No

+

String

+

Period of waiting for a marker file. If you set Start Job by Marker File to Yes but no marker file exists in the source path, the job fails upon suspension timeout.

+

If you set this parameter to 0 and no marker file exists in the source path, the job will fail immediately.

+

Unit: second

+

fromJobConfig.filterType

+

No

+

Enumeration

+
Filter type. Possible values are as follows:
  • WILDCARD: Enter a wildcard character to filter paths or files. CDM will migrate the paths or files that meet the filter condition.
  • TIME: Specify a time filter. CDM will migrate the files modified after the specified time point.
+
+

fromJobConfig.pathFilter

+

No

+

String

+

Path filter, which is configured when the filter type is WILDCARD. It is used to filter the file directories. For example, *input.

+

fromJobConfig.fileFilter

+

No

+

String

+

File filter, which is configured when the filter type is WILDCARD. It is used to filter files in the specified directory. Use commas (,) to separate multiple files. For example, *.csv,*.txt.

+

fromJobConfig.startTime

+

No

+

String

+

If you set Filter Type to Time Filter, and specify a point in time for this parameter, only the files modified after the specified time are transferred. The time format must be yyyy-MM-dd HH:mm:ss.

+

This parameter can be set to a macro variable of date and time. For example, ${timestamp(dateformat(yyyy-MM-dd HH:mm:ss,-90,DAY))} indicates that only files generated within the latest 90 days are migrated.

+

fromJobConfig.endTime

+

No

+

String

+

If you set Filter Type to Time Filter, and specify a point in time for this parameter, only the files modified before the specified time are transferred. The time format must be yyyy-MM-dd HH:mm:ss.

+

This parameter can be set to a macro variable of date and time. For example, ${timestamp(dateformat(yyyy-MM-dd HH:mm:ss))} indicates that only the files whose modification time is earlier than the current time are migrated.

+

fromJobConfig.fileSeparator

+

No

+

String

+

File separator. If you enter multiple file paths in fromJobConfig.inputDirectory, CDM uses the file separator to separate files. The default value is |.

+

fromJobConfig.decryption

+

No

+

Enumeration

+
Whether to decrypt the encrypted file before export and the decryption method. The options are as follows:
  • NONE: Do not decrypt but directly export the file.
  • AES-256-GCM: Use the AES-256-GCM (NoPadding) algorithm to decrypt the file and then export the file.
+
+

fromJobConfig.dek

+

No

+

String

+

Data decryption key. The key is a string of 64-bit hexadecimal numbers and must be the same as the data encryption key toJobConfig.dek configured during encryption. If the encryption and decryption keys are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+

fromJobConfig.iv

+

No

+

String

+

Initialization vector required for decryption. The initialization vector is a string of 32-bit hexadecimal numbers and must be the same as the initialization vector toJobConfig.iv configured during encryption. If the initialization vectors are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+

fromJobConfig.md5FileSuffix

+

No

+

String

+

Check whether the files extracted by CDM are consistent with those in the migration source.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0284.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0284.html new file mode 100644 index 000000000..5826684a5 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0284.html @@ -0,0 +1,358 @@ + + +

From HDFS

+

Sample JSON File

"from-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "fromJobConfig.inputDirectory",
+                "value": "/hdfsfrom/from_hdfs_est.csv"
+              },
+              {
+                "name": "fromJobConfig.inputFormat",
+                "value": "CSV_FILE"
+              },
+              {
+                "name": "fromJobConfig.columnList",
+                "value": "1"
+              },
+              {
+                "name": "fromJobConfig.fieldSeparator",
+                "value": ","
+              },
+              {
+                "name": "fromJobConfig.quoteChar",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.regexSeparator",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.firstRowAsHeader",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.encodeType",
+                "value": "UTF-8"
+              },
+              {
+                "name": "fromJobConfig.fromCompression",
+                "value": "NONE"
+              },
+              {
+                "name": "fromJobConfig.compressedFileSuffix",
+                "value": "*"
+              },
+              {
+                "name": "fromJobConfig.splitType",
+                "value": "FILE"
+              },
+              {
+                "name": "fromJobConfig.useMarkerFile",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.fileSeparator",
+                "value": "|"
+              },
+              {
+                "name": "fromJobConfig.filterType",
+                "value": "NONE"
+              }
+            ],
+            "name": "fromJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

  • HDFS job parameter description +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    fromJobConfig.inputDirectory

    +

    Yes

    +

    String

    +

    Path for storing data to be extracted. For example, /data_dir.

    +

    fromJobConfig.inputFormat

    +

    Yes

    +

    Enumeration

    +
    File format required for data transmission. Currently, the following file formats are supported:
    • CSV_FILE: CSV format
    • PARQUET_FILE: Parquet format
    • BINARY_FILE: binary format
    +
    +

    If you select BINARY_FILE, the migration destination must also be a file system.

    +

    fromJobConfig.columnList

    +

    No

    +

    String

    +

    Numbers of columns to be extracted. Use & to separate column numbers in ascending order. For example, 1&3&5.

    +

    fromJobConfig.lineSeparator

    +

    No

    +

    String

    +

    Line feed character. This parameter is valid only when the file format is CSV_FILE. The default value is \r\n.

    +

    fromJobConfig.fieldSeparator

    +

    No

    +

    String

    +

    Field delimiter. This parameter is valid only when the file format is CSV_FILE. The default value is ,.

    +

    fromJobConfig.quoteChar

    +

    No

    +

    Boolean

    +

    Whether to use a quote character. If this parameter is set to true, the field delimiter in the quote character is regarded as a part of the string value. The default quote character of CDM is ".

    +

    fromJobConfig.regexSeparator

    +

    No

    +

    Boolean

    +

    Whether to use regular expressions to separate fields. This parameter is valid only when the file format is CSV_FILE.

    +

    fromJobConfig.encodeType

    +

    No

    +

    String

    +

    Encoding type. For example, UTF_8 or GBK.

    +

    fromJobConfig.firstRowAsHeader

    +

    No

    +

    Boolean

    +

    Whether to regard the first line as the heading line. This parameter is valid only when the file format is CSV_FILE. When you migrate a CSV file to a table, CDM writes all data to the table by default. If this parameter is set to true, CDM uses the first line of the CSV file as the heading line and does not write the line to the destination table.

    +

    fromJobConfig.fromCompression

    +

    No

    +

    Enumeration

    +

    Compression format. Only the source files in specified compression format are transferred. NONE indicates files in all formats are transferred.

    +

    fromJobConfig.compressedFileSuffix

    +

    No

    +

    String

    +

    Extension of the files to be decompressed. Files are decompressed only when their names are suffixed with this value. Otherwise, the files are transferred in their original formats. If you enter * or leave the parameter blank, all files are decompressed.

    +

    fromJobConfig.splitType

    +

    No

    +

    Enumeration

    +
    Whether to split files by file or size. If HDFS files are split, each shard is regarded as a file.
    • FILE: Split files by file quantity. If there are 10 files and throttlingConfig.numExtractors is set to 5, each shard consists of two files.
    • SIZE: Split files by file size. Files will not be split for balance. Suppose there are 10 files, among which nine are 10 MB and one is 200 MB in size. If throttlingConfig.numExtractors is set to 2, two shards will be created, one for processing the nine 10 MB files, the other for processing the 200 MB file.
    +
    +

    fromJobConfig.useMarkerFile

    +

    No

    +

    Boolean

    +

    Whether to start a job by a marker file. A job is started only when a marker file for starting the job exists in the source path. Otherwise, the job will be suspended for a period of time specified by fromJobConfig.waitTime.

    +

    fromJobConfig.markerFile

    +

    No

    +

    String

    +

    Name of the marker file for starting a job. After a marker file is specified, the task is executed only when the file exists in the source path. If the marker file is not specified, this function is disabled by default. For example, ok.txt.

    +

    fromJobConfig.fileSeparator

    +

    No

    +

    String

    +

    File separator. If you enter multiple file paths for fromJobConfig.inputDirectory, CDM uses the file separator to separate files. The default value is |.

    +

    fromJobConfig.filterType

    +

    No

    +

    Enumeration

    +
    Filter type. Possible values are as follows:
    • WILDCARD: Enter a wildcard character to filter paths or files. CDM will migrate the paths or files that meet the filter condition.
    • TIME: Specify a time filter. CDM will migrate the files modified after the specified time point.
    +
    +

    fromJobConfig.pathFilter

    +

    No

    +

    String

    +

    Path filter, which is configured when the filter type is WILDCARD. It is used to filter the file directories. For example, *input.

    +

    fromJobConfig.fileFilter

    +

    No

    +

    String

    +

    File filter, which is configured when the filter type is WILDCARD. It is used to filter files in the specified directory. Use commas (,) to separate multiple files. For example, *.csv,*.txt.

    +

    fromJobConfig.startTime

    +

    No

    +

    String

    +

    If you set Filter Type to Time Filter, and specify a point in time for this parameter, only the files modified after the specified time are transferred. The time format must be yyyy-MM-dd HH:mm:ss.

    +

    This parameter can be set to a macro variable of date and time. For example, ${timestamp(dateformat(yyyy-MM-dd HH:mm:ss,-90,DAY))} indicates that only files generated within the latest 90 days are migrated.

    +

    fromJobConfig.endTime

    +

    No

    +

    String

    +

    If you set Filter Type to Time Filter, and specify a point in time for this parameter, only the files modified before the specified time are transferred. The time format must be yyyy-MM-dd HH:mm:ss.

    +

    This parameter can be set to a macro variable of date and time. For example, ${timestamp(dateformat(yyyy-MM-dd HH:mm:ss))} indicates that only the files whose modification time is earlier than the current time are migrated.

    +

    fromJobConfig.createSnapshot

    +

    No

    +

    Boolean

    +

    If this parameter is set to true, CDM creates a snapshot for the source directory to be migrated (the snapshot cannot be created for a single file) before it reads files from HDFS. Then CDM migrates the data in the snapshot.

    +

    Only the HDFS administrator can create a snapshot. After the CDM job is completed, the snapshot is deleted.

    +

    fromJobConfig.formats

    +

    No

    +

    Data structure

    +

    Time format. This parameter is mandatory only when fromJobConfig.inputFormat is set to CSV_FILE and the time field exists in the file. For details, see Description of the fromJobConfig.formats parameter.

    +

    fromJobConfig.decryption

    +

    No

    +

    Enumeration

    +
    This parameter is available only when fromJobConfig.inputFormat is set to BINARY_FILE. It specifies whether to decrypt the encrypted file before export, and the decryption method. The options are as follows:
    • NONE: Do not decrypt but directly export the file.
    • AES-256-GCM: Use the AES-256-GCM (NoPadding) algorithm to decrypt the file and then export the file.
    +
    +

    fromJobConfig.dek

    +

    No

    +

    String

    +

    Data decryption key. The key is a string of 64-bit hexadecimal numbers and must be the same as the data encryption key toJobConfig.dek configured during encryption. If the encryption and decryption keys are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

    +

    fromJobConfig.iv

    +

    No

    +

    String

    +

    Initialization vector required for decryption. The initialization vector is a string of 32-bit hexadecimal numbers and must be the same as the initialization vector toJobConfig.iv configured during encryption. If the initialization vectors are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

    +
    +
    +
+
+
  • Description of the fromJobConfig.formats parameter +
    + + + + + + + + + + + + + + + + +

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    name

    +

    Yes

    +

    String

    +

    Column number. For example, 1.

    +

    value

    +

    Yes

    +

    String

    +

    Time format. For example, yyyy-MM-dd.

    +
    +
    +
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0285.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0285.html new file mode 100644 index 000000000..cb638cc68 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0285.html @@ -0,0 +1,87 @@ + + +

From Hive

+

Sample JSON File

"from-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "fromJobConfig.hive",
+                "value": "hive"
+              },
+              {
+                "name": "fromJobConfig.database",
+                "value": "rf_database"
+              },
+              {
+                "name": "fromJobConfig.table",
+                "value": "rf_from"
+              },
+              {
+                "name": "fromJobConfig.columnList",
+                "value": "tiny&small&int&integer&bigint&float&double&timestamp&char&varchar&text"
+              }
+            ],
+            "name": "fromJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

fromJobConfig.hive

+

No

+

String

+

Data source to be extracted. If the data source is Hive, set this parameter to hive.

+

fromJobConfig.database

+

No

+

String

+

Database from which data is extracted. For example, default.

+

fromJobConfig.table

+

Yes

+

String

+

Name of the table from which data is extracted. For example, cdm.

+

fromJobConfig.columnList

+

No

+

String

+

Numbers of columns to be extracted. Use & to separate column numbers in ascending order. For example, 1&3&5.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0286.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0286.html new file mode 100644 index 000000000..0726eecf5 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0286.html @@ -0,0 +1,161 @@ + + +

From HBase/CloudTable

+

Sample JSON File

"from-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "fromJobConfig.table",
+                "value": "rf_from"
+              },
+              {
+                "name": "fromJobConfig.columnFamilies",
+                "value": "rowkey&f"
+              },
+              {
+                "name": "fromJobConfig.columns",
+                "value": "rowkey:rowkey&f:_small"
+              },
+              {
+                "name": "fromJobConfig.formats",
+                "value": {
+                  "f:_date": "yyyy-MM-dd",
+                  "f:_timestamp": "yyyy-MM-dd HH:mm:ss"
+                }
+              }
+            ],
+            "name": "fromJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

  • HBase/CloudTable job parameter description +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    fromJobConfig.table

    +

    Yes

    +

    String

    +

    Name of the table from which data is extracted. For example, cdm.

    +

    fromJobConfig.columnFamilies

    +

    No

    +

    String

    +

    Column family to which the data to be extracted belongs

    +

    fromJobConfig.columns

    +

    No

    +

    String

    +

    Columns to be extracted. Use & to separate column numbers and : to separate column families and columns. For example, cf1:c1&cf2:c2.

    +

    fromJobConfig.isSplit

    +

    No

    +

    Boolean

    +

    Whether to split the rowkey. For example, true.

    +

    fromJobConfig.delimiter

    +

    No

    +

    String

    +

    Delimiter used for splitting rowkeys. If this parameter is not set, row keys will not be split. For example, vertical bars (|).

    +

    fromJobConfig.startTime

    +

    No

    +

    String

    +

    Minimum timestamp of the time range (the time point is included). The format is yyyy-MM-dd hh:mm:ss.

    +

    Only the data created at this point in time and later is extracted.

    +

    fromJobConfig.endTime

    +

    No

    +

    String

    +

    Maximum timestamp of the time range (the time point is not included). The format is yyyy-MM-dd hh:mm:ss.

    +

    Only the data created before this point in time is extracted.

    +

    fromJobConfig.formats

    +

    No

    +

    Data structure

    +

    Time format. For details, see Description of the fromJobConfig.formats parameter.

    +
    +
    +
  • Description of the fromJobConfig.formats parameter +
    + + + + + + + + + + + + + + + + +

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    name

    +

    Yes

    +

    String

    +

    Column number. For example, 1.

    +

    value

    +

    Yes

    +

    String

    +

    Time format. For example, yyyy-MM-dd.

    +
    +
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0287.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0287.html new file mode 100644 index 000000000..06b8c4ed5 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0287.html @@ -0,0 +1,334 @@ + + +

From FTP/SFTP/NAS (to Be Brought Offline)/SFS (to Be Brought Offline)

+

Sample JSON File

"from-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "fromJobConfig.inputDirectory",
+                "value": "/sftpfrom/from_sftp.csv"
+              },
+              {
+                "name": "fromJobConfig.inputFormat",
+                "value": "CSV_FILE"
+              },
+              {
+                "name": "fromJobConfig.columnList",
+                "value": "1&2&3&4&5&6&7&8&9&10&11&12"
+              },
+              {
+                "name": "fromJobConfig.fieldSeparator",
+                "value": ","
+              },
+              {
+                "name": "fromJobConfig.regexSeparator",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.firstRowAsHeader",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.encodeType",
+                "value": "UTF-8"
+              },
+              {
+                "name": "fromJobConfig.fromCompression",
+                "value": "NONE"
+              },
+              {
+                "name": "fromJobConfig.splitType",
+                "value": "FILE"
+              }
+            ],
+            "name": "fromJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

Source link job parameters of FTP and SFTP are the same. Table 1 describes the parameters. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Source link job parameters of file systems

Parameter

+

Mandatory

+

Type

+

Description

+

fromJobConfig.inputDirectory

+

Yes

+

String

+

Path for storing files to be extracted. You can enter a maximum of 50 file paths, which are separated by vertical bars (|). You can also customize the separators. For example, FROM/example.csv|FROM/b.txt.

+

fromJobConfig.inputFormat

+

Yes

+

Enumeration

+
File format required for data transmission. Currently, the following file formats are supported:
  • CSV_FILE: CSV format, used to migrate files to data tables
  • JSON_FILE: JSON format, used to migrate files to data tables
  • BINARY_FILE: Files (even not in binary format) will be directly transferred without resolution. It is applicable to file copy.
+
+

If you select BINARY_FILE, the migration destination must also be a file system.

+

fromJobConfig.lineSeparator

+

No

+

String

+

Line feed character in the file. For example, \n. By default, \n, \r, or \r\n is automatically identified.

+

fromJobConfig.columnList

+

No

+

String

+

Numbers of columns to be extracted. Use & to separate column numbers in ascending order. For example, 1&3&5.

+

fromJobConfig.lineSeparator

+

No

+

String

+

Line feed character. This parameter is valid only when the file format is CSV_FILE. The default value is \r\n.

+

fromJobConfig.fieldSeparator

+

No

+

String

+

Field delimiter. This parameter is valid only when the file format is CSV_FILE. The default value is ,.

+

fromJobConfig.quoteChar

+

No

+

Boolean

+

Whether to use the encircling symbol. If this parameter is set to true, the field delimiters in the encircling symbol are regarded as a part of the string value. Currently, the default encircling symbol of CDM is double quotation mark (").

+

fromJobConfig.regexSeparator

+

No

+

Boolean

+

Whether to use the regular expression to separate fields. This parameter is valid only when the file format is CSV_FILE.

+

fromJobConfig.regex

+

No

+

String

+

Regular expression. This parameter is valid only when the regular expression is used to separate fields.

+

fromJobConfig.firstRowAsHeader

+

No

+

Boolean

+

Whether to regard the first line as the heading line. This parameter is valid only when the file format is CSV_FILE. When you migrate a CSV file to a table, CDM writes all data to the table by default. If this parameter is set to true, CDM uses the first line of the CSV file as the heading line and does not write the line to the destination table.

+

fromJobConfig.fromCompression

+

No

+

Enumeration

+
Compression format. This parameter is valid only when the file format is CSV_FILE or JSON. The options are as follows:
  • NONE: Files in all formats are transferred.
  • GZIP: Files in gzip format are transferred.
  • ZIP: Files in Zip format are transferred.
+
+

fromJobConfig.splitType

+

No

+

Enumeration

+

Whether to split files by file or size.

+
  • FILE: Split files by file quantity. If there are 10 files and throttlingConfig.numExtractors is set to 5, each shard consists of two files.
  • SIZE: Split files by file size. Files will not be split for balance. Suppose there are 10 files, among which nine are 10 MB and one is 200 MB in size. If throttlingConfig.numExtractors is set to 2, two shards will be created. One of them processes the nine 10 MB files, and the other processes the 200 MB file.
+

fromJobConfig.jsonReferenceNode

+

No

+

String

+

Reference node. This parameter is valid when the file format is JSON_FILE. Resolve data on the JSON node. If the data corresponding to the node is a JSON array, the system extracts data from the array in the same mode. Nested JSON nodes are separated by periods (.). For example, data.list.

+

fromJobConfig.encodeType

+

No

+

String

+

Encoding type. For example, UTF_8 or GBK.

+

fromJobConfig.fromFileOpType

+

No

+

Enumeration

+

Source file processing mode. After a job is completed, operations on the source file can be performed. The source file can be renamed or deleted.

+

fromJobConfig.useMarkerFile

+

No

+

Boolean

+

Whether to start a job by a marker file. A job is started only when a marker file for starting the job exists in the source path. Otherwise, the job will be suspended for a period of time specified by fromJobConfig.waitTime.

+

fromJobConfig.markerFile

+

No

+

String

+

Name of the marker file for starting a job. After a marker file is specified, the task is executed only when the file exists in the source path. If the marker file is not specified, this function is disabled by default. For example, ok.txt.

+

fromJobConfig.waitTime

+

No

+

String

+

Period of waiting for a marker file. If you set Start Job by Marker File to Yes but no marker file exists in the source path, the job fails upon suspension timeout.

+

If you set this parameter to 0 and no marker file exists in the source path, the job will fail immediately.

+

Unit: second

+

fromJobConfig.filterType

+

No

+

Enumeration

+
Filter type. Possible values are as follows:
  • WILDCARD: Enter a wildcard character to filter paths or files. CDM will migrate the paths or files that meet the filter condition.
  • TIME: Specify a time filter. CDM will migrate the files modified after the specified time point.
+
+

fromJobConfig.pathFilter

+

No

+

String

+

Path filter, which is configured when the filter type is WILDCARD. It is used to filter the file directories. For example, *input.

+

fromJobConfig.fileFilter

+

No

+

String

+

File filter, which is configured when the filter type is WILDCARD. It is used to filter files in the specified directory. Use commas (,) to separate multiple files. For example, *.csv,*.txt.

+

fromJobConfig.startTime

+

No

+

String

+

If you set Filter Type to Time Filter, and specify a point in time for this parameter, only the files modified after the specified time are transferred. The time format must be yyyy-MM-dd HH:mm:ss.

+

This parameter can be set to a macro variable of date and time. For example, ${timestamp(dateformat(yyyy-MM-dd HH:mm:ss,-90,DAY))} indicates that only files generated within the latest 90 days are migrated.

+

fromJobConfig.endTime

+

No

+

String

+

If you set Filter Type to Time Filter, and specify a point in time for this parameter, only the files modified before the specified time are transferred. The time format must be yyyy-MM-dd HH:mm:ss.

+

This parameter can be set to a macro variable of date and time. For example, ${timestamp(dateformat(yyyy-MM-dd HH:mm:ss))} indicates that only the files whose modification time is earlier than the current time are migrated.

+

fromJobConfig.fileSeparator

+

No

+

String

+

File separator. If you enter multiple file paths in fromJobConfig.inputDirectory, CDM uses the file separator to separate files. The default value is |.

+

fromJobConfig.decryption

+

No

+

Enumeration

+
Whether to decrypt the encrypted file before export and the decryption method. The options are as follows:
  • NONE: Do not decrypt but directly export the file.
  • AES-256-GCM: Use the AES-256-GCM (NoPadding) algorithm to decrypt the file and then export the file.
+
+

fromJobConfig.dek

+

No

+

String

+

Data decryption key. The key is a string of 64-bit hexadecimal numbers and must be the same as the data encryption key toJobConfig.dek configured during encryption. If the encryption and decryption keys are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+

fromJobConfig.iv

+

No

+

String

+

Initialization vector required for decryption. The initialization vector is a string of 32-bit hexadecimal numbers and must be the same as the initialization vector toJobConfig.iv configured during encryption. If the initialization vectors are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+

fromJobConfig.md5FileSuffix

+

No

+

String

+

Check whether the files extracted by CDM are consistent with those in the migration source.

+
+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0288.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0288.html new file mode 100644 index 000000000..9ef3d196e --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0288.html @@ -0,0 +1,148 @@ + + +

From HTTP/HTTPS

+

Sample JSON File

"from-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "fromJobConfig.inputDirectory",
+                "value": "http://10.114.196.186:8080/httpfrom/symbol.txt"
+              },
+              {
+                "name": "fromJobConfig.inputFormat",
+                "value": "BINARY_FILE"
+              },
+              {
+                "name": "fromJobConfig.fromCompression",
+                "value": "TARGZ"
+              },
+              {
+                "name": "fromJobConfig.compressedFileSuffix",
+                "value": "*"
+              },
+              {
+                "name": "fromJobConfig.fileSeparator",
+                "value": "|"
+              }
+            ],
+            "name": "fromJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

fromJobConfig.inputDirectory

+

Yes

+

String

+

URL of the file to be extracted

+

These connectors are used to read files with an HTTP/HTTPS URL, such as reading public files on the third-party object storage system and web disks.

+

fromJobConfig.inputFormat

+

Yes

+

Enumeration

+

File format required for data transmission. Currently, only the binary format is supported.

+

fromJobConfig.fromCompression

+

No

+

Enumeration

+
Compression format of the source files. The options are as follows:
  • NONE: Files in all formats are transferred.
  • GZIP: Files in gzip format are transferred.
  • ZIP: Files in Zip format are transferred.
  • TAR.GZ: Files in TAR.GZ format are transferred.
+
+

fromJobConfig.compressedFileSuffix

+

No

+

String

+

Extension of the files to be decompressed. The decompression operation is performed only when the file name extension is used in a batch of files. Otherwise, files are transferred in the original format. If you enter * or leave the parameter blank, all files are decompressed.

+

fromJobConfig.fileSeparator

+

No

+

String

+

File separator. When multiple files are transferred, CDM uses the file separator to separate files. The default value is |.

+

fromJobConfig.useQuery

+

No

+

Boolean

+
  • If you set this parameter to true, the name of the objects uploaded to OBS does not carry the query parameter.
  • If you set this parameter to false, the name of the objects uploaded to OBS carries the query parameter.
+

fromJobConfig.decryption

+

No

+

Enumeration

+
Whether to decrypt the encrypted file before export and the decryption method. The options are as follows:
  • NONE: Do not decrypt but directly export the file.
  • AES-256-GCM: Use the AES-256-GCM (NoPadding) algorithm to decrypt the file and then export the file.
+
+

fromJobConfig.dek

+

No

+

String

+

Data decryption key. The key is a string of 64-bit hexadecimal numbers and must be the same as the data encryption key toJobConfig.dek configured during encryption. If the encryption and decryption keys are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+

fromJobConfig.iv

+

No

+

String

+

Initialization vector required for decryption. The initialization vector is a string of 32-bit hexadecimal numbers and must be the same as the initialization vector toJobConfig.iv configured during encryption. If the initialization vectors are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+

fromJobConfig.md5FileSuffix

+

No

+

String

+

Check whether the files extracted by CDM are consistent with those in the migration source.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0289.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0289.html new file mode 100644 index 000000000..41bec74a5 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0289.html @@ -0,0 +1,101 @@ + + +

From MongoDB/DDS

+

Sample JSON File

"from-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "fromJobConfig.database",
+                "value": "cdm"
+              },
+              {
+                "name": "fromJobConfig.collectionName",
+                "value": "rf_from"
+              },
+              {
+                "name": "fromJobConfig.columnList",
+                "value": "TINYTEST&SMALLTEST&INTTEST&INTEGERTEST&BIGINTTEST&FLOATTEST"
+              },
+              {
+                "name": "fromJobConfig.isBatchMigration",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.filters",
+                "value": "{'last_name': 'Smith'}"
+              }
+            ],
+            "name": "fromJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

fromJobConfig.database

+

Yes

+

String

+

Name of the MongoDB/DDS database

+

fromJobConfig.collectionName

+

Yes

+

String

+

Name of the MongoDB/DDS collection

+

fromJobConfig.columnList

+

No

+

String

+

List of fields to be extracted. Use & to separate field names. For example, id&gid&name.

+

fromJobConfig.isBatchMigration

+

No

+

Boolean

+

Whether to migrate all data in the database

+

fromJobConfig.filters

+

No

+

String

+
Filter condition for files. CDM migrates only the data that meets the filter condition. Examples:
  1. Filter by expression: {'last_name': 'Smith'} indicates that all files whose last_name value is Smith are queried.
  2. Filter by parameter: { x : "john" }, { z : 1 } indicates that all z fields whose x is john are queried.
  3. Filter by condition: { "field" : { $gt: 5 } } indicates that the field values greater than 5 are queried.
+
+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0290.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0290.html new file mode 100644 index 000000000..2601fee76 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0290.html @@ -0,0 +1,157 @@ + + +

From Redis/DCS (to Be Brought Offline)

+

Sample JSON File

"from-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "fromJobConfig.isBatchMigration",
+                "value": "false"
+              },
+              {
+                "name": "fromJobConfig.keyPrefix",
+                "value": "rf_string_from"
+              },
+              {
+                "name": "fromJobConfig.keySeparator",
+                "value": ":"
+              },
+              {
+                "name": "fromJobConfig.valueStoreType",
+                "value": "STRING"
+              },
+              {
+                "name": "fromJobConfig.valueSeparator",
+                "value": ","
+              },
+              {
+                "name": "fromJobConfig.columnList",
+                "value": "1&2&3&4&5&6&7&8&9&10&11&12"
+              }
+            ],
+            "name": "fromJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

  • Redis job parameter description +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    fromJobConfig.isBatchMigration

    +

    No

    +

    Boolean

    +

    Whether to migrate all data in the database

    +

    fromJobConfig.keyPrefix

    +

    Yes

    +

    String

    +

    Key prefix, which is the name of the corresponding association table.

    +

    Mapping between Redis and the association table: Name of the association table + delimiter is a Redis key, and a row of data in the association table is a Redis value.

    +

    fromJobConfig.keySeparator

    +

    Yes

    +

    String

    +

    Key delimiter, which separates the association table and primary key

    +

    fromJobConfig.valueStoreType

    +

    Yes

    +

    String

    +

    Storage mode of rows of data in the association table on Redis. The options are string and hash.

    +
    • STRING: indicates that a row of data is stored as a character string using delimiters to separate columns. This mode reduces storage space occupation.
    • HASH: indicates that a row of data is stored in column name:column value format in the hash table.
    +

    fromJobConfig.valueSeparator

    +

    No

    +

    String

    +

    Value delimiter. The default value is \tab. This parameter is valid when valueStoreType is set to STRING.

    +

    fromJobConfig.columnList

    +

    No

    +

    String

    +

    List of fields to be extracted. Use & to separate field names. For example, id&gid&name.

    +

    fromJobConfig.formats

    +

    No

    +

    Data structure

    +

    Time format. For details, see Description of the fromJobConfig.formats parameter.

    +
    +
    +
  • Description of the fromJobConfig.formats parameter +
    + + + + + + + + + + + + + + + + +

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    name

    +

    Yes

    +

    String

    +

    Column number. For example, 1.

    +

    value

    +

    Yes

    +

    String

    +

    Time format. For example, yyyy-MM-dd.

    +
    +
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0291.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0291.html new file mode 100644 index 000000000..be713cd2a --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0291.html @@ -0,0 +1,137 @@ + + +

From DIS

+

Sample JSON File

"from-config-values": {
+          "configs": [
+              {
+                  "inputs": [
+                      {
+                         "name": "fromJobConfig.streamName",
+                         "value": "cdm"
+                      },
+                      {
+                         "name": "fromJobConfig.disConsumerStrategy",
+                         "value": "FROM_LAST_STOP"
+                      },
+                      {
+                         "name": "fromJobConfig.isPermanency",
+                         "value": "true"
+                      },
+                      {
+                         "name": "fromJobConfig.maxPollRecords",
+                         "value": "100"
+                      },
+                      {
+                         "name": "fromJobConfig.shardId",
+                         "value": "0"
+                      },
+                      {
+                         "name": "fromJobConfig.dataFormat",
+                         "value": "BINARY"
+                      },
+                      {
+                         "name": "fromJobConfig.separator",
+                         "value": ","
+                      }
+                  ],
+                  "name": "fromJobConfig"
+              }
+          ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

fromJobConfig.streamName

+

Yes

+

String

+

DIS stream name

+

fromJobConfig.disConsumerStrategy

+

Yes

+

Enumeration

+

Used to set the initial offset when data is pulled from DIS. The options are as follows:

+
  • LATEST: maximum offset, that is, the latest data
  • FROM_LAST_STOP: data after the last stop
  • EARLIEST: minimum offset, that is, the earliest data
+

fromJobConfig.isPermanency

+

Yes

+

Boolean

+

Whether to run permanently

+

fromJobConfig.maxPollRecords

+

No

+

String

+

Maximum number of requests that can be sent to DIS each time

+

fromJobConfig.shardId

+

Yes

+

String

+

ID of the DIS partition. You can enter multiple partition IDs, which are separated by commas (,).

+

fromJobConfig.dataFormat

+

Yes

+

Enumeration

+

Format used for parsing data. The options are as follows:

+
  • BINARY: Data is transferred without being parsed, which is applicable to file migration.
  • CSV: Source data will be migrated after being parsed in CSV format.
+

fromJobConfig.separator

+

No

+

String

+

Field delimiter

+

fromJobConfig.appName

+

No

+

String

+

Unique identifier of the consumer application

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0292.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0292.html new file mode 100644 index 000000000..cd2b4a3fc --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0292.html @@ -0,0 +1,122 @@ + + +

From Kafka

+

Sample JSON File

"from-config-values": {
+           "configs": [
+               {
+                   "inputs": [
+                       {
+                       "name": "fromJobConfig.topicsList",
+                       "value": "est1,est2"
+                       },
+                       {
+                       "name": "fromJobConfig.kafkaConsumerStrategy",
+                       "value": "EARLIEST"
+                       },
+                       {
+                       "name": "fromJobConfig.isPermanency",
+                       "value": "true"
+                       }
+                   ],
+                   "name": "fromJobConfig"
+               }
+           ]
+       }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

fromJobConfig.topicsList

+

Yes

+

String

+

List of Kafka topics. Separate multiple topics by commas (,).

+

fromJobConfig.kafkaConsumerStrategy

+

Yes

+

Enumeration

+

Used to set the initial offset when data is pulled from Kafka. The options are as follows:

+
  • LATEST: maximum offset, that is, the latest data
  • EARLIEST: minimum offset, that is, the earliest data
+

fromJobConfig.isPermanency

+

Yes

+

Boolean

+

Whether to run permanently

+

fromJobConfig.groupId

+

No

+

String

+

Consumer group ID

+

If you export data from DMS Kafka, enter any value for Kafka Platinum but a valid consumer group ID for Kafka Basic.

+

fromJobConfig.dataFormat

+

Yes

+

Enumeration

+

Format used for parsing data. The options are as follows:

+
  • BINARY: Data is transferred without being parsed, which is applicable to file migration.
  • CSV: Source data will be migrated after being parsed in CSV format.
+

fromJobConfig.maxPollRecords

+

No

+

String

+

Maximum number of requests that can be sent to Kafka each time

+

fromJobConfig.maxPollInterval

+

No

+

String

+

Maximum interval between each poll

+

fromJobConfig.separator

+

No

+

String

+

Field delimiter

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0293.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0293.html new file mode 100644 index 000000000..3ddfebb07 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0293.html @@ -0,0 +1,100 @@ + + +

From Elasticsearch/Cloud Search Service

+

Sample JSON File

"from-config-values": {
+                "configs": [
+                    {
+                        "inputs": [
+                            {
+                                "name": "fromJobConfig.index",
+                                "value": "cdm"
+                            },
+                            {
+                                "name": "fromJobConfig.type",
+                                "value": "es"
+                            },
+                            {
+                                "name": "fromJobConfig.columnList",
+                                "value": "a1:numeric&s1:string"
+                            },
+                           {
+                               "name": "fromJobConfig.splitNestedField",
+                               "value": "true"
+                           },
+                           {
+                               "name": "fromJobConfig.queryString",
+                               "value": "last_name:Smith"
+                           }
+                        ],
+                        "name": "fromJobConfig"
+                    }
+                ]
+            }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

fromJobConfig.index

+

Yes

+

String

+

Index of the extracted data, which is similar to the database name in the relational database

+

fromJobConfig.type

+

Yes

+

String

+

Type of the extracted data, which is similar to the table name in the relational database

+

fromJobConfig.columnList

+

No

+

String

+

List of fields to be extracted. Use & to separate field names. For example, id&gid&name.

+

fromJobConfig.splitNestedField

+

No

+

Boolean

+

Whether to split the JSON content of the nested field. For example, a:{ b:{ c:1, d:{ e:2, f:3 } } } can be split into a.b.c, a.b.d.e, and a.b.d.f.

+

fromJobConfig.queryString

+

No

+

String

+

Whether to use the Elasticsearch query string to filter the source data. CDM migrates only the data that meets the filter criteria.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0294.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0294.html new file mode 100644 index 000000000..aed5cfd4b --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0294.html @@ -0,0 +1,105 @@ + + +

From OpenTSDB

+

Sample JSON File

      "from-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "fromJobConfig.start",
+                "value": "0"
+              },
+              {
+                "name": "fromJobConfig.metric",
+                "value": "city.temp"
+              },
+              {
+                "name": "fromJobConfig.aggregator",
+                "value": "sum"
+              },
+              {
+                "name": "fromJobConfig.columnList",
+                "value": "ps.timestample&metric&aggregator&dps.value"
+              }
+            ],
+            "name": "fromJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

fromJobConfig.start

+

Yes

+

String

+

Start time of the query. The value is a character string or timestamp in the format of yyyyMMddHHmmdd.

+

fromJobConfig.end

+

No

+

String

+

End time of the query. The value is a character string or timestamp in the format of yyyyMMddHHmmdd.

+

fromJobConfig.metric

+

Yes

+

String

+

Metric of the data to be migrated

+

fromJobConfig.aggregator

+

Yes

+

String

+

Aggregate function

+

fromJobConfig.tags

+

No

+

String

+

Data tag. If you specify this parameter, only the tagged data will be migrated.

+

fromJobConfig.columnList

+

No

+

String

+

Field list

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0295.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0295.html new file mode 100644 index 000000000..8a4682755 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0295.html @@ -0,0 +1,37 @@ + + +

Destination Job Parameters

+
+
+ + + +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0296.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0296.html new file mode 100644 index 000000000..4daeb7cf9 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0296.html @@ -0,0 +1,173 @@ + + +

To a Relational Database

+

Sample JSON File

"to-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "toJobConfig.schemaName",
+                "value": "cdm"
+              },
+              {
+                "name": "toJobConfig.tablePreparation",
+                "value": "DROP_AND_CREATE"
+              },
+              {
+                "name": "toJobConfig.tableName",
+                "value": "rf_to"
+              },
+              {
+                "name": "toJobConfig.columnList",
+                "value": "id&gid&name"
+              },
+              {
+                "name": "toJobConfig.isCompress",
+                "value": "false"
+              },
+              {
+                "name": "toJobConfig.orientation",
+                "value": "ROW"
+              },
+              {
+                "name": "toJobConfig.useStageTable",
+                "value": "false"
+              },
+              {
+                "name": "toJobConfig.shouldClearTable",
+                "value": "false"
+              },
+              {
+                "name": "toJobConfig.extendCharLength",
+                "value": "false"
+              }
+            ],
+            "name": "toJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

toJobConfig.schemaName

+

Yes

+

String

+

Database mode or tablespace

+

toJobConfig.tablePreparation

+

Yes

+

Enumeration

+
This parameter is available only when both the source and destination databases are relational databases. The options for data write to tables are as follows:
  • DO_NOTHING: Do not create the table automatically.
  • CREATE_WHEN_NOT_EXIST: If the destination database does not contain the table specified by tableName, CDM automatically creates the table.
  • DROP_AND_CREATE: Delete the table specified by tableName, and then create the table again.
+
+

toJobConfig.tableName

+

Yes

+

String

+

Name of the table to which data is written

+

toJobConfig.columnList

+

No

+

String

+

List of fields to be loaded. Use & to separate field names. For example, id&gid&name.

+

toJobConfig.beforeImportType

+

No

+

Enumeration

+
Whether to clear the data in the target table before data import. The options are as follows:
  • none: Do not clear the data in the target table before data import but append data to the table.
  • shouldClearTable: Clear the data in the target table before data import.
  • whereClause: To clear data in the target table based on the WHERE clause, set the toJobConfig.whereClause parameter. CDM deletes the data from the target table as specified.
+
+

toJobConfig.whereClause

+

No

+

String

+

WHERE clause used to delete data from the target table before data import

+

toJobConfig.orientation

+

No

+

Enumeration

+

Storage mode. This parameter is enabled only for the DWS database. When the DWS database table needs to be automatically created, the optional data storage modes of the table are as follows:

+
  • ROW: Data in the table is stored in rows.
  • COLUMN: Data in the table is stored in columns.
+

toJobConfig.isCompress

+

No

+

Boolean

+

Whether to perform compression. This parameter is enabled only for the DWS database. When the DWS database table needs to be automatically created, you can specify whether to store the data in the table after compression.

+

oJobConfig.useStageTable

+

No

+

Boolean

+

Whether to import data to the phase table first. If this parameter is set to true, the data is imported to the phase table before it is imported to the destination table. After the data is successfully imported to the phase table, it is then imported from the phase table to the destination table. In this way, the data that is successfully imported to the destination table remains in case the data import fails.

+

toJobConfig.extendCharLength

+

No

+

Boolean

+

Whether to extend the length of the character string field. If this parameter is set to true, the length of the character string field in the destination table is three times the length of the corresponding field in the source table when the destination table needs to be automatically created.

+

toJobConfig.useNullable

+

No

+

Boolean

+

If you choose to create a target table automatically and specify the NOT NULL constraint, keep the NOT NULL constraints of the source and target tables consistent.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0297.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0297.html new file mode 100644 index 000000000..ef9122408 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0297.html @@ -0,0 +1,317 @@ + + +

To OBS

+

Sample JSON File

"to-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "toJobConfig.bucketName",
+                "value": "cdm"
+              },
+              {
+                "name": "toJobConfig.outputDirectory",
+                "value": "/obsfrom/advance/"
+              },
+              {
+                "name": "toJobConfig.outputFormat",
+                "value": "CSV_FILE"
+              },
+              {
+                "name": "toJobConfig.fieldSeparator",
+                "value": ","
+              },
+              {
+                "name": "toJobConfig.writeToTempFile",
+                "value": "false"
+              },
+              {
+                "name": "toJobConfig.validateMD5",
+                "value": "false"
+              },
+              {
+                "name": "toJobConfig.recordMD5Result",
+                "value": "false"
+              },
+              {
+                "name": "toJobConfig.encodeType",
+                "value": "UTF-8"
+              },
+              {
+                "name": "toJobConfig.markerFile",
+                "value": "finish.txt"
+              },
+              {
+                "name": "toJobConfig.duplicateFileOpType",
+                "value": "REPLACE"
+              },
+              {
+                "name": "toJobConfig.columnList",
+                "value": "1&2"
+              },
+              {
+                "name": "toJobConfig.quoteChar",
+                "value": "false"
+              },
+              {
+                "name": "toJobConfig.encryption",
+                "value": "NONE"
+              },
+              {
+                "name": "toJobConfig.copyContentType",
+                "value": "false"
+              }
+            ],
+            "name": "toJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

toJobConfig.bucketName

+

Yes

+

String

+

OBS bucket name. For example, cdm.

+

toJobConfig.outputDirectory

+

Yes

+

String

+

Path to which data is written. For example, data_dir.

+

toJobConfig.outputFormat

+

Yes

+

Enumeration

+
File format required for data writes (except the binary format). Currently, the following file formats are supported:
  • CSV_FILE: Write data in CSV format.
  • BINARY_FILE: Files are directly transferred without resolving the content. CDM writes the file without changing the file format.
+
+

If you select BINARY_FILE, the migration source must also be a file system.

+

toJobConfig.fieldSeparator

+

No

+

String

+

Column delimiter. This parameter is valid only when toJobConfig.outputFormat is CSV_FILE. The default value is ,.

+

toJobConfig.lineSeparator

+

No

+

String

+

Line feed character. This parameter is valid only when toJobConfig.outputFormat is CSV_FILE. The default value is \r\n.

+

toJobConfig.writeFileSize

+

No

+

String

+

Whether to fragment multiple files by size so that the files are exported in proper size. The unit is MB. This parameter is valid when the migration source is a database.

+

toJobConfig.duplicateFileOpType

+

No

+

Enumeration

+
Method for processing duplicate files. If the name and size of a file are the same as those of another file, the file is regarded as a duplicate file. Duplicate files can be processed in the following ways:
  • REPLACE: Replace duplicate files.
  • SKIP: Skip duplicate files.
  • ABANDON: Stop the job when any duplicate file is found.
+
+

toJobConfig.columnList

+

No

+

String

+

List of the fields to be extracted. Use & to separate field names, for example, id&gid&name.

+

toJobConfig.encryption

+

No

+

Enumeration

+
Whether to encrypt the uploaded data and the encryption method. The options are as follows:
  • NONE: Directly write data without encryption.
  • KMS: Use KMS in Data Encryption Workshop (DEW) for encryption. If KMS encryption is enabled, MD5 verification for data cannot be performed.
  • AES-256-GCM: Use the AES 256-bit encryption algorithm to encrypt data. Currently, only the AES-256-GCM (NoPadding) encryption algorithm is supported.
+
+

toJobConfig.dek

+

No

+

String

+

Data encryption key. This parameter is available when toJobConfig.encryption is set to AES-256-GCM. The key is a string of 64-bit hexadecimal numbers.

+

Remember the key configured here because the decryption key must be the same as that configured here. If the encryption and decryption keys are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+

toJobConfig.iv

+

No

+

String

+

Initialization vector. This parameter is available when toJobConfig.encryption is set to AES-256-GCM. The initialization vector is a string of 32-bit hexadecimal numbers.

+

Remember the initialization vector configured here because the initialization vector used for decryption must be the same as that configured here. If the initialization vectors are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+

toJobConfig.kmsID

+

No

+

String

+

Key used for encryption during data upload. You must create a key in KMS before data upload.

+

toJobConfig.projectID

+

No

+

String

+

ID of the project to which the KMS key belongs.

+

toJobConfig.writeToTempFile

+

No

+

Boolean

+

The binary file is written to a .tmp file first. After the migration is successful, run the rename or move command at the destination to restore the file.

+

toJobConfig.validateMD5

+

No

+

Boolean

+

Whether to verify the MD5 value. MD5 verification cannot be used together with KMS encryption. MD5 values can be verified only when files are transferred in binary format.

+

Calculate the MD5 value of the source file and verify it with the MD5 value returned by OBS. If an MD5 file exists on the source end, directly read the MD5 file and verify the MD5 file with the MD5 value returned by OBS.

+

toJobConfig.recordMD5Result

+

No

+

Boolean

+

Whether to record the verification result when the MD5 value is verified

+

toJobConfig.recordMD5Link

+

No

+

String

+

OBS link where the bucket to which the MD5 verification result is written resides

+

toJobConfig.recordMD5Bucket

+

No

+

String

+

OBS bucket to which the MD5 verification result is written

+

toJobConfig.recordMD5Directory

+

No

+

String

+

Directory to which the MD5 verification result is written

+

toJobConfig.encodeType

+

No

+

String

+

Encoding type. For example, UTF_8 or GBK.

+

toJobConfig.markerFile

+

No

+

String

+

Whether to generate a marker file with a custom name in the destination directory after a job is executed successfully. If you do not specify a file name, this function is disabled by default.

+

toJobConfig.copyContentType

+

No

+

Boolean

+

This parameter is displayed only when toJobConfig.outputFormat is Binary and both the migration source and destination are object storage.

+

If you set this parameter to Yes, the Content-Type attribute of the source file is copied during object file migration. This function is mainly used for static website migration

+

The Content-Type attribute cannot be written to Archive buckets. Therefore, if you set this parameter to Yes, the migration destination must be a non-Archive bucket.

+

toJobConfig.quoteChar

+

No

+

Boolean

+

This parameter is available only when toJobConfig.outputFormat is CSV. It is used when database tables are migrated to file systems.

+

If you set this parameter to Yes and a field in the source data table contains a field delimiter or line separator, CDM uses double quotation marks (") as the quote character to quote the field content as a whole to prevent a field delimiter from dividing a field into two fields, or a line separator from dividing a field into different lines. For example, if the hello,world field in the database is quoted, it will be exported to the CSV file as a whole.

+

toJobConfig.firstRowAsHeader

+

No

+

Boolean

+

This parameter is available only when toJobConfig.outputFormat is CSV. When a table is migrated to a CSV file, CDM does not migrate the heading line of the table by default. If this parameter is set to Yes, CDM writes the heading line of the table to the file.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0298.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0298.html new file mode 100644 index 000000000..e6f6e93af --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0298.html @@ -0,0 +1,165 @@ + + +

To HDFS

+

Sample JSON File

"to-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "toJobConfig.outputDirectory",
+                "value": "/hdfsto"
+              },
+              {
+                "name": "toJobConfig.outputFormat",
+                "value": "BINARY_FILE"
+              },
+              {
+                "name": "toJobConfig.writeToTempFile",
+                "value": "false"
+              },
+              {
+                "name": "toJobConfig.duplicateFileOpType",
+                "value": "REPLACE"
+              },
+              {
+                "name": "toJobConfig.compression",
+                "value": "NONE"
+              },
+              {
+                "name": "toJobConfig.appendMode",
+                "value": "true"
+              }
+            ],
+            "name": "toJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

toJobConfig.outputDirectory

+

Yes

+

String

+

Path to which data is written. For example, /data_dir.

+

toJobConfig.outputFormat

+

Yes

+

Enumeration

+
File format required for data writes (except the binary format). Currently, the following file formats are supported:
  • CSV_FILE: Write data in CSV format.
  • BINARY_FILE: Files are directly transferred without resolving the content. CDM writes the file without changing the file format.
+
+

If you select BINARY_FILE, the migration source must also be a file system.

+

toJobConfig.lineSeparator

+

No

+

String

+

Line feed character. This parameter is valid only when toJobConfig.outputFormat is CSV_FILE. The default value is \r\n.

+

toJobConfig.fieldSeparator

+

No

+

String

+

Column delimiter. This parameter is valid only when toJobConfig.outputFormat is CSV_FILE. The default value is ,.

+

toJobConfig.writeToTempFile

+

No

+

Boolean

+

The binary file is written to a .tmp file first. After the migration is successful, run the rename or move command at the migration destination to restore the file.

+

toJobConfig.duplicateFileOpType

+

No

+

Enumeration

+
Method for processing duplicate files. If the name and size of a file are the same as those of another file, the file is regarded as a duplicate file. Duplicate files can be processed in the following ways:
  • REPLACE: Replace duplicate files.
  • SKIP: Skip duplicate files.
  • ABANDON: Stop the job when any duplicate file is found.
+
+

toJobConfig.compression

+

No

+

Enumeration

+
After the file is written, select the compression format of the file. The following compression formats are supported:
  • NONE: Do not compress the file.
  • DEFLATE: Compress the file in DEFLATE format.
  • GZIP: Compress the file in gzip format.
  • BZIP2: Compress the file in bzip2 format.
  • LZ4: Compress the file in LZ4 format.
  • SNAPPY: Compress the file in Snappy format.
+
+

toJobConfig.appendMode

+

Yes

+

Boolean

+

Whether to write data when one or more files exist in the loading path. The default value is false.

+

toJobConfig.encryption

+

No

+

Enumeration

+
This parameter is available only when toJobConfig.outputFormat is set to BINARY_FILE. It specifies whether to encrypt the uploaded data, and the encryption method. The options are as follows:
  • NONE: Directly write data without encryption.
  • AES-256-GCM: Use the AES 256-bit encryption algorithm to encrypt data. Currently, only the AES-256-GCM (NoPadding) encryption algorithm is supported.
+
+

toJobConfig.dek

+

No

+

String

+

Data encryption key. This parameter is available when toJobConfig.encryption is set to AES-256-GCM. The key is a string of 64-bit hexadecimal numbers.

+

Remember the key configured here because the decryption key must be the same as that configured here. If the encryption and decryption keys are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+

toJobConfig.iv

+

No

+

String

+

Initialization vector. This parameter is available when toJobConfig.encryption is set to AES-256-GCM. The initialization vector is a string of 32-bit hexadecimal numbers.

+

Remember the initialization vector configured here because the initialization vector used for decryption must be the same as that configured here. If the initialization vectors are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0299.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0299.html new file mode 100644 index 000000000..879ff6e4a --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0299.html @@ -0,0 +1,114 @@ + + +

To Hive

+

Sample JSON File

"to-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "toJobConfig.hive",
+                "value": "hive"
+              },
+              {
+                "name": "toJobConfig.database",
+                "value": "rf_database"
+              },
+              {
+                "name": "toJobConfig.table",
+                "value": "rf_to"
+              },
+              {
+                "name": "toJobConfig.tablePreparation",
+                "value": "DO_NOTHING"
+              },
+              {
+                "name": "toJobConfig.columnList",
+                "value": "aa&bb&cc&dd"
+              },
+              {
+                "name": "toJobConfig.shouldClearTable",
+                "value": "true"
+              }
+            ],
+            "name": "toJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

toJobConfig.hive

+

No

+

String

+

Data source to which data is written

+

toJobConfig.database

+

No

+

String

+

Name of the database to which data is written. For example, default.

+

toJobConfig.table

+

Yes

+

String

+

Name of the table to which data is written

+

toJobConfig.tablePreparation

+

Yes

+

Enumeration

+
The options for data write to tables are as follows:
  • DO_NOTHING: Do not create the table automatically.
  • CREATE_WHEN_NOT_EXIST: If the destination database does not contain the table specified by tableName, CDM automatically creates the table.
  • DROP_AND_CREATE: Delete the table specified by tableName, and then create the table again.
+
+

toJobConfig.columnList

+

No

+

String

+

List of fields to be loaded. Use & to separate field names. For example, id&gid&name.

+

toJobConfig.shouldClearTable

+

No

+

Boolean

+

Whether to clear the data in the target table before data import. If this parameter is set to true, the data in the target table is cleared before the job is started.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0300.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0300.html new file mode 100644 index 000000000..357090893 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0300.html @@ -0,0 +1,164 @@ + + +

To HBase/CloudTable

+

Sample JSON File

"to-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "toJobConfig.table",
+                "value": "rf_to"
+              },
+              {
+                "name": "toJobConfig.storageType",
+                "value": "PUTLIST"
+              },
+              {
+                "name": "toJobConfig.columns",
+                "value": "AA:AA&BB:BB&CC:CC&DD:DD"
+              },
+              {
+                "name": "toJobConfig.rowKeyColumn",
+                "value": "AA:AA"
+              },
+              {
+                "name": "toJobConfig.isOverride",
+                "value": "false"
+              },
+              {
+                "name": "toJobConfig.isRowkeyRedundancy",
+                "value": "false"
+              },
+              {
+                "name": "toJobConfig.algorithm",
+                "value": "NONE"
+              },
+              {
+                "name": "toJobConfig.writeToWAL",
+                "value": "true"
+              },
+              {
+                "name": "toJobConfig.transType",
+                "value": "false"
+              }
+            ],
+            "name": "toJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

toJobConfig.table

+

Yes

+

String

+

Name of the table to which data is written. For example, TBL_EXAMPLE.

+

toJobConfig.storageType

+

Yes

+

Enumeration

+
Mode for writing data to an HBase table. The options are as follows:
  • BULKLOAD: The BULKLOAD mode is recommended to improve the loading performance.
  • PUTLIST: The PUTLIST mode is recommended only when the data volume is small.
+
+

toJobConfig.columns

+

No

+

String

+

Columns to be extracted. Use & to separate column numbers and : to separate column families and columns. For example, cf1:c1&cf2:c2.

+

toJobConfig.rowKeyColumn

+

Yes

+

String

+

Columns serve as rowkeys. Use & to separate column numbers and : to separate column families and columns. For example, cf1:c1&cf2:c2.

+

toJobConfig.isOverride

+

No

+

Boolean

+

Whether to clear data when data is imported in BULKLOAD mode. For example, true.

+

toJobConfig.delimiter

+

No

+

String

+

Delimiter used for separating columns when multiple columns are used as rowkeys. For example, vertical bars (|).

+

toJobConfig.isRowkeyRedundancy

+

No

+

Boolean

+

Whether to write rowkey data to the HBase column at the same time

+

toJobConfig.algorithm

+

No

+

Enumeration

+

Compression algorithm used when a new HBase table is created. The Snappy and GZ algorithms are supported. The default value is None.

+

toJobConfig.writeToWAL

+

No

+

Boolean

+

Whether to enable Write Ahead Log (WAL) of HBase. The options are as follows:

+
  • Yes: If the HBase server breaks down after the function is enabled, you can replay the operations that have not been performed in WAL.
  • No: If you set this parameter to No, the write performance is improved. However, if the HBase server breaks down, data may be lost.
+

toJobConfig.transType

+

No

+

Boolean

+
  • true: Data of the Short, Int, Long, Float, Double, and Decimal columns in the source database is converted into Byte[] arrays (binary) and written into HBase. Other types of data are written as character strings. If several types of data mentioned above are combined as rowkeys, they will be written as character strings.

    This function saves storage space. In specific scenarios, the rowkey distribution is evener.

    +
  • false: All types of data in the source database are written into HBase as character strings.
+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0301.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0301.html new file mode 100644 index 000000000..673f764f3 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0301.html @@ -0,0 +1,183 @@ + + +

To FTP/SFTP/NAS (to Be Brought Offline)/SFS (to Be Brought Offline)

+

Sample JSON File

"to-config-values": {
+                "configs": [
+                    {
+                        "inputs": [
+                          {
+                           "name": "toJobConfig.outputDirectory",
+                           "value": "/opt/data"
+                          },
+                          {
+                           "name": "toJobConfig.outputFormat",
+                           "value": "CSV_FILE"
+                          },
+                          {
+                           "name": "toJobConfig.fieldSeparator",
+                           "value": ","
+                          },
+                          {
+                           "name": "toJobConfig.duplicateFileOpType",
+                           "value": "REPLACE"
+                            }
+                        ],
+                        "name": "toJobConfig"
+                    }
+                ]
+            }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

toJobConfig.outputDirectory

+

Yes

+

String

+

Path to which data is written. For example, /data_dir.

+

toJobConfig.outputFormat

+

Yes

+

Enumeration

+
File format required for data writes (except the binary format). Currently, the following file formats are supported:
  • CSV_FILE: Write data in CSV format.
  • BINARY_FILE: Files are directly transferred without resolving the content. CDM writes the file without changing the file format.
+
+

If you select BINARY_FILE, the migration source must also be a file system.

+

toJobConfig.duplicateFileOpType

+

No

+

Enumeration

+
Method for processing duplicate files. If the name and size of a file are the same as those of another file, the file is regarded as a duplicate file. Duplicate files can be processed in the following ways:
  • REPLACE: Replace duplicate files.
  • SKIP: Skip duplicate files.
  • ABANDON: Stop the job when any duplicate file is found.
+
+

toJobConfig.lineSeparator

+

No

+

String

+

Line feed character. This parameter is valid only when toJobConfig.outputFormat is CSV_FILE. The default value is \r\n.

+

toJobConfig.fieldSeparator

+

No

+

String

+

Column delimiter. This parameter is valid only when toJobConfig.outputFormat is CSV_FILE. The default value is ,.

+

toJobConfig.encodeType

+

No

+

String

+

Encoding type. For example, UTF_8 or GBK.

+

toJobConfig.writeToTempFile

+

No

+

Boolean

+

The binary file is written to a .tmp file first. After the migration is successful, run the rename or move command at the migration destination to restore the file.

+

toJobConfig.recordMD5Result

+

No

+

Boolean

+

This parameter is invalid when File Format is set to Binary. An MD5 hash value is generated for each transferred file, and the value is recorded in a new .md5 file. You can specify the directory where the MD5 value is generated.

+

toJobConfig.recordMD5Directory

+

No

+

String

+

Directory for storing MD5 values

+

toJobConfig.markerFile

+

No

+

String

+

Whether to generate a marker file with a custom name in the destination directory after a job is executed successfully. If you do not specify a file name, this function is disabled by default.

+

toJobConfig.firstRowAsHeader

+

No

+

Boolean

+

This parameter is available only when toJobConfig.outputFormat is CSV. When a table is migrated to a CSV file, CDM does not migrate the heading line of the table by default. If this parameter is set to Yes, CDM writes the heading line of the table to the file.

+

toJobConfig.encryption

+

No

+

Enumeration

+
Whether to encrypt the uploaded data and the encryption method. The options are as follows:
  • NONE: Directly write data without encryption.
  • AES-256-GCM: Use the AES 256-bit encryption algorithm to encrypt data. Currently, only the AES-256-GCM (NoPadding) encryption algorithm is supported.
+
+

toJobConfig.dek

+

No

+

String

+

Data encryption key. This parameter is available when toJobConfig.encryption is set to AES-256-GCM. The key is a string of 64-bit hexadecimal numbers.

+

Remember the key configured here because the decryption key must be the same as that configured here. If the encryption and decryption keys are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+

toJobConfig.iv

+

No

+

String

+

Initialization vector. This parameter is available when toJobConfig.encryption is set to AES-256-GCM. The initialization vector is a string of 32-bit hexadecimal numbers.

+

Remember the initialization vector configured here because the initialization vector used for decryption must be the same as that configured here. If the initialization vectors are inconsistent, the system does not report an exception, but the decrypted data is incorrect.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0302.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0302.html new file mode 100644 index 000000000..9422c4a00 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0302.html @@ -0,0 +1,87 @@ + + +

To DDS

+

Sample JSON File

"to-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "toJobConfig.database",
+                "value": "demo"
+              },
+              {
+                "name": "toJobConfig.collectionName",
+                "value": "cdmbase"
+              },
+              {
+                "name": "toJobConfig.columnList",
+                "value": "_char&_varchar"
+              },
+              {
+                "name": "toJobConfig.isBatchMigration",
+                "value": "false"
+              }
+            ],
+            "name": "toJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

toJobConfig.database

+

Yes

+

String

+

Name of the MongoDB/DDS database

+

toJobConfig.collectionName

+

Yes

+

String

+

Name of the MongoDB/DDS collection

+

toJobConfig.columnList

+

No

+

String

+

List of fields to be extracted. Use & to separate field names. For example, id&gid&name.

+

toJobConfig.isBatchMigration

+

No

+

Boolean

+

Whether to migrate all data in the database

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0303.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0303.html new file mode 100644 index 000000000..ae73fd75c --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0303.html @@ -0,0 +1,183 @@ + + +

To DCS

+

Sample JSON File

 "to-config-values": {
+           "configs": [
+               {
+                   "inputs": [
+                       {
+                          "name": "toJobConfig.isBatchMigration",
+                          "value": "false"
+                       },
+                       {
+                          "name": "toJobConfig.shouldClearDatabase",
+                          "value": "false"
+                       },
+                       {
+                           "name": "toJobConfig.keyPrefix",
+                           "value": "cdm_string"
+                       },
+                       {
+                           "name": "toJobConfig.keySeparator",
+                           "value": ":"
+                       },
+                       {
+                           "name": "toJobConfig.primaryKeyList",
+                           "value": "1"
+                       },
+                       {
+                           "name": "toJobConfig.valueStoreType",
+                           "value": "STRING"
+                       },
+                       {
+                           "name": "toJobConfig.valueSeparator",
+                           "value": ","
+                       },
+                       {
+                           "name": "toJobConfig.columnList",
+                           "value": "1&2&3&4&5&6&7&8&9&10&11&12"
+                       }
+                   ],
+                   "name": "toJobConfig"
+               }
+           ]
+       }
+
+

Parameter Description

  • Parameter description +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    toJobConfig.isBatchMigration

    +

    No

    +

    Boolean

    +

    Whether to migrate all data in the database

    +

    toJobConfig.shouldClearDatabase

    +

    No

    +

    Boolean

    +

    Whether to clear data before import

    +

    toJobConfig.keyPrefix

    +

    Yes

    +

    String

    +

    Key prefix, which is similar to the table name of a relational database

    +

    Mapping between Redis and the association table: Name of the association table + delimiter is a Redis key, and a row of data in the association table is a Redis value.

    +

    toJobConfig.keySeparator

    +

    Yes

    +

    String

    +

    Key delimiter, which separates the association table and primary key

    +

    toJobConfig.primaryKeyList

    +

    Yes

    +

    String

    +

    List of primary keys. Use & to separate field names. For example, id&gid.

    +

    toJobConfig.valueStoreType

    +

    Yes

    +

    Enumeration

    +

    Storage mode of rows of data in the association table on Redis. The options are string and hash.

    +
    • STRING: indicates that a row of data is stored as a character string, in which columns in the row are separated by valueSeparator.
    • Hash: indicates that a row of data is stored in column name:column value format in the hash table.
    +

    toJobConfig.valueSeparator

    +

    No

    +

    String

    +

    Value delimiter. The default value is \tab. This parameter is valid when valueStoreType is set to string.

    +

    toJobConfig.columnList

    +

    No

    +

    String

    +

    List of fields to be written. Use & to separate field names. For example, id&gid&name.

    +

    toJobConfig.formats

    +

    No

    +

    Data structure

    +

    Time format. For details, see Description of the toJobConfig.formats parameter.

    +
    +
    +
  • Description of the toJobConfig.formats parameter +
    + + + + + + + + + + + + + + + + +

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    name

    +

    Yes

    +

    String

    +

    Column number. For example, 1.

    +

    value

    +

    Yes

    +

    String

    +

    Time format. For example, yyyy-MM-dd.

    +
    +
    +
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0304.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0304.html new file mode 100644 index 000000000..4bfe879c9 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0304.html @@ -0,0 +1,116 @@ + + +

To Elasticsearch/Cloud Search Service

+

Sample JSON File

"to-config-values": {
+                "configs": [
+                    {
+                        "inputs": [
+                            {
+                              "name": "toJobConfig.index",
+                              "value": "cdm"
+                            },
+                            {
+                              "name": "toJobConfig.type",
+                              "value": "type1"
+                            },
+                            {
+                              "name": "toJobConfig.shouldClearType",
+                              "value": "false"
+                            },
+                           {
+                              "name": "toJobConfig.pipeLine",
+                              "value": "es_03"
+                           }
+                        ],
+                        "name": "toJobConfig"
+                    }
+                ]
+            }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

toJobConfig.index

+

Yes

+

String

+

Index of the written data, which is similar to the database name in the relational database

+

toJobConfig.type

+

Yes

+

String

+

Type of the written data, which is similar to the table name in the relational database

+

toJobConfig.shouldClearType

+

No

+

Boolean

+

Whether to clear data before import

+

toJobConfig.primaryKey

+

No

+

String

+

Primary key or unique index

+

toJobConfig.columnList

+

No

+

String

+

List of fields to be written. Use & to separate field names. For example, id&gid&name.

+

toJobConfig.pipeLine

+

No

+

String

+

This parameter is available only after a pipeline ID is created in Kibana. It is used to convert the data format using the data transformation pipeline of Cloud Search Service or Elasticsearch after data is transferred to Cloud Search Service or Elasticsearch.

+

toJobConfig.createIndexStrategy

+

No

+

Enumeration

+
For streaming jobs that continuously write data to Elasticsearch, CDM periodically creates indexes and writes data to the indexes, which helps you delete expired data. The indexes can be created based on the following periods:
  • EveryHour: CDM creates indexes on the hour. The new indexes are named in the format of Index name+Year+Month+Day+Hour, for example, index2018121709.
  • EveryDay: CDM creates indexes at 00:00 every day. The new indexes are named in the format of Index name+Year+Month+Day, for example, index20181217.
  • EveryWeek: CDM creates indexes at 00:00 every Monday. The new indexes are named in the format of Index name+Year+Week, for example, index201842.
  • EveryMonth: CDM creates indexes at 00:00 on the first day of each month. The new indexes are named in the format of Index name+Year+Month, for example, index201812.
+
+

When extracting data from a file, you must configure a single extractor, which means setting Concurrent Extractors to 1. Otherwise, this parameter is invalid.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0305.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0305.html new file mode 100644 index 000000000..253e53351 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0305.html @@ -0,0 +1,100 @@ + + +

To DLI

+

Sample JSON File

"to-config-values": {
+                "configs": [
+                    {
+                        "inputs": [
+                            {
+                                "name": "toJobConfig.queue",
+                                "value": "cdm"
+                            },
+                            {
+                                "name": "toJobConfig.database",
+                                "value": "sqoop"
+                            },
+                            {
+                                "name": "toJobConfig.table",
+                                "value": "est1"
+                            },
+                            {
+                                "name": "toJobConfig.columnList",
+                                "value": "string_&int_&date_&double_&boolean_&short_&timestamp_&long_&smallint_&bigint_"
+                            },
+                            {
+                                "name": "toJobConfig.shouldClearTable",
+                                "value": "false"
+                            }
+                        ],
+                        "name": "toJobConfig"
+                    }
+                ]
+            }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

toJobConfig.queue

+

Yes

+

String

+

Resource queue to which data is written

+

toJobConfig.database

+

Yes

+

String

+

DLI database to which data is written

+

toJobConfig.table

+

Yes

+

String

+

Name of the table to which data is written

+

toJobConfig.columnList

+

No

+

String

+

List of fields to be loaded. Use & to separate field names. For example, id&gid&name.

+

toJobConfig.shouldClearTable

+

No

+

Boolean

+

Whether to clear data in the resource queue before data import

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0306.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0306.html new file mode 100644 index 000000000..0b3cb7307 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0306.html @@ -0,0 +1,74 @@ + + +

To DIS

+

Sample JSON File

"to-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "toJobConfig.streamName",
+                "value": "cdm"
+              },
+              {
+                "name": "toJobConfig.separator",
+                "value": ","
+              },
+              {
+                "name": "toJobConfig.identifierEnclose",
+                "value": "'"
+              }
+            ],
+            "name": "toJobConfig"
+          }
+        ]
+      }
+
+

Parameter description

+
+ + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

toJobConfig.streamName

+

Yes

+

String

+

DIS stream name

+

toJobConfig.separator

+

No

+

String

+

Field separator. The default value is a space.

+

toJobConfig.identifierEnclose

+

No

+

String

+

Delimiter used to separate referenced table names or column names. By default, this parameter is left blank.

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0307.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0307.html new file mode 100644 index 000000000..cbf1acf37 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0307.html @@ -0,0 +1,87 @@ + + +

To OpenTSDB

+

Sample JSON File

"to-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "toJobConfig.metric",
+                "value": "city.temp"
+              },
+              {
+                "name": "toJobConfig.timeStamp",
+                "value": "0"
+              },
+              {
+                "name": "toJobConfig.tags",
+                "value": "tagk1:tagv1"
+              },
+              {
+                "name": "toJobConfig.columnList",
+                "value": "metric:1&tag:2&timestamp&value"
+              }
+            ],
+            "name": "toJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

toJobConfig.metric

+

No

+

String

+

Data metric

+

toJobConfig.timeStamp

+

No

+

String

+

Data point. The value is a character string or timestamp in the format of yyyyMMddHHmmdd.

+

toJobConfig.tags

+

No

+

String

+

Data tag

+

toJobConfig.columnList

+

No

+

String

+

Field list

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0308.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0308.html new file mode 100644 index 000000000..1ebdd29dd --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0308.html @@ -0,0 +1,231 @@ + + +

Job Parameter Description

+

When Creating a Job in a Specified Cluster or Creating and Executing a Job in a Random Cluster, the driver-config-values parameter specifies the job configuration, which includes the following functions:

+
  • Retry upon Failure: If a job fails to be executed, you can choose whether to automatically restart the job.
  • Job Group: CDM allows you to group jobs. You can filter, delete, start, or export jobs by group.
  • Schedule Execution: Specify whether to execute scheduled jobs.
  • Concurrent Extractors: Enter the number of concurrent extractors.
  • Write Dirty Data: Specify this parameter if data that fails to be processed or filtered out during job execution needs to be written to OBS for future viewing. Before writing dirty data, create an OBS link.
  • Delete Job After Completion: Specify whether to delete a job after the job is executed.
+

Sample JSON File

"driver-config-values": {
+        "configs": [
+          {
+            "inputs": [
+              {
+                "name": "throttlingConfig.numExtractors",
+                "value": "1"
+              },
+              {
+                "name": "throttlingConfig.numLoaders",
+                "value": "1"
+              },
+              {
+                "name": "throttlingConfig.recordDirtyData",
+                "value": "false"
+              }
+            ],
+            "name": "throttlingConfig"
+          },
+          {
+            "inputs": [],
+            "name": "jarConfig"
+          },
+          {
+            "inputs": [
+              {
+                "name": "schedulerConfig.isSchedulerJob",
+                "value": "false"
+              },
+              {
+                "name": "schedulerConfig.disposableType",
+                "value": "NONE"
+              }
+            ],
+            "name": "schedulerConfig"
+          },
+          {
+            "inputs": [],
+            "name": "transformConfig"
+          },
+          {
+            "inputs": [
+              {
+                "name": "retryJobConfig.retryJobType",
+                "value": "NONE"
+              }
+            ],
+            "name": "retryJobConfig"
+          }
+        ]
+      }
+
+

Parameter Description

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Parameter

+

Mandatory

+

Type

+

Description

+

throttlingConfig.numExtractors

+

No

+

Integer

+

Maximum number of concurrent extraction jobs. For example, 20.

+

groupJobConfig.groupName

+

No

+

Enumeration

+

Group to which a job belongs. The default group is DEFAULT.

+

throttlingConfig.numLoaders

+

No

+

Integer

+

This parameter is available only when HBase or Hive serves as the destination data source.

+

Maximum number of loading jobs. For example, 5.

+

throttlingConfig.recordDirtyData

+

No

+

Boolean

+

Whether to write dirty data. For example, true.

+

throttlingConfig.writeToLink

+

No

+

String

+

Link to which dirty data is written. Currently, dirty data can be written only to OBS or HDFS. For example, obslink.

+

throttlingConfig.obsBucket

+

No

+

String

+

Name of the OBS bucket to which dirty data is written. This parameter is valid only when dirty data is written to OBS. For example, dirtyData.

+

throttlingConfig.dirtyDataDirectory

+

No

+

String

+

Directory to which dirty data is written

+
  • To write dirty data to HDFS, set this parameter to the specified HDFS directory.
  • To write dirty data to OBS, set this parameter to the directory in the OBS bucket. For example, /data/dirtydata/.
+

throttlingConfig.maxErrorRecords

+

No

+

String

+

Maximum number of error records in a single shard. When the number of error records of a map exceeds the upper limit, the task automatically ends. The imported data will not be rolled back.

+

schedulerConfig.isSchedulerJob

+

No

+

Boolean

+

Whether to enable a scheduled task. For example, true.

+

schedulerConfig.cycleType

+

No

+

String

+

Cycle type of a scheduled task. The options are as follows:

+
  • minute: minute
  • hour: hour
  • day: day
  • week: week
  • month: month
+

schedulerConfig.cycle

+

No

+

Integer

+

Cycle of a scheduled task. If cycleType is set to minute and cycle is set to 10, the scheduled task is executed every 10 minutes.

+

schedulerConfig.runAt

+

No

+

String

+

Time when a scheduled task is triggered in a cycle. This parameter is valid only when cycleType is set to hour, week, or month.

+
  • If cycleType is set to month, cycle is set to 1, and runAt is set to 15, the scheduled task is executed on the 15th day of each month. You can set runAt to multiple values and separate the values with commas (,).

    For example, if runAt is set to 1,2,3,4,5, the scheduled task is executed on the first day, second day, third day, fourth day, and fifth day of each month.

    +
  • If cycleType is set to week and runAt is set to mon,tue,wed,thu,fri, the scheduled task is executed on Monday to Friday.
  • If cycleType is set to hour and runAt is set to 27,57, the scheduled task is executed at the 27th and 57th minute in the cycle.
+

schedulerConfig.startDate

+

No

+

String

+

Start time of a scheduled task. For example, 2018-01-24 19:56:19.

+

schedulerConfig.stopDate

+

No

+

String

+

End time of a scheduled task. For example, 2018-01-27 23:59:00.

+

If you do not set the end time, the scheduled task is always executed and will never stop.

+

schedulerConfig.disposableType

+

No

+

Enumeration

+
Whether to delete a job after the job is executed. The options are as follows:
  • NONE: A job will not be deleted after it is executed.
  • DELETE_AFTER_SUCCEED: A job will be deleted only after it is successfully executed. It is applicable to massive one-time jobs.
  • DELETE: A job will be deleted after it is executed, regardless of the execution result.
+
+

retryJobConfig.retryJobType

+

No

+

Enumeration

+

Whether to automatically retry if a job fails to be executed. The options are as follows:

+
  • NONE: Do not retry.
  • RETRY_TRIPLE: Retry three times.
+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0309.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0309.html new file mode 100644 index 000000000..a79ef04b0 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0309.html @@ -0,0 +1,21 @@ + + + +

Appendix

+ +

+
+ +
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0310.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0310.html new file mode 100644 index 000000000..39b6bab1a --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0310.html @@ -0,0 +1,329 @@ + + +

Status Codes

+
A status code consists of three digits. The first digit defines the class of a response. There are five values for the first digit:
  • 1xx: indication information, indicating that the request has been received and can be further processed.
  • 2xx: success, indicating that the request has been received, understood, and accepted.
  • 3xx: redirection, indicating that the request requires further operations before it can be completed.
  • 4xx: client error, indicating that there is a syntax error in the request or the request cannot be implemented.
  • 5xx: server error, indicating that the server has failed to implement a valid request.
+
+

Table 1 describes status codes.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Status codes

Status Code

+

Message

+

Description

+

100

+

Continue

+

The client should continue with its request.

+

This interim response is used to inform the client that part of the request has been received and has not yet been rejected by the server.

+

101

+

Switching Protocols

+

The protocol should be switched. The protocol can only be switched to a newer protocol.

+

For example, the current HTTP protocol is switched to a later version of HTTP.

+

200

+

OK

+

The request has been fulfilled.

+

201

+

Created

+

The request has been fulfilled and a new resource has been created.

+

202

+

Accepted

+

The request has been accepted, but the processing has not been completed.

+

203

+

Non-Authoritative Information

+

The server has successfully processed the request, but is returning information that may be from another source.

+

204

+

NoContent

+

The request has been fulfilled, but the HTTP response does not contain a response body.

+

The status code is returned in response to an HTTPS OPTIONS request.

+

205

+

Reset Content

+

The server has fulfilled the request, but the requester is required to reset the content.

+

206

+

Partial Content

+

The server has successfully processed the partial GET request.

+

300

+

Multiple Choices

+

There are multiple options for the location of the requested resource. The response contains a list of resource characteristics and addresses from which the user or user agent (such as a browser) can choose the most appropriate one.

+

301

+

Moved Permanently

+

The requested resource has been assigned a new permanent URI, and the new URI is contained in the response.

+

302

+

Found

+

The requested resource resides temporarily under a different URI.

+

303

+

See Other

+

The response to the request can be found under a different URI, and should be retrieved using a GET or POST method.

+

304

+

Not Modified

+

The requested resource has not been modified. When the server returns this status code, it does not return any resources.

+

305

+

Use Proxy

+

The requested resource is available only through a proxy.

+

306

+

Unused

+

The HTTP status code is no longer used.

+

400

+

BadRequest

+

The request is invalid.

+

The client should not repeat the request without modifications.

+

401

+

Unauthorized

+

This status code is returned after the client provides the authentication information, indicating that the authentication information is incorrect or invalid.

+

402

+

Payment Required

+

This status code is reserved for future use.

+

403

+

Forbidden

+

The server understood the request, but is refusing to fulfill it.

+

The client should not repeat the request without modifications.

+

404

+

NotFound

+

The requested resource cannot be found.

+

The client should not repeat the request without modifications.

+

405

+

MethodNotAllowed

+

The method specified in the request is not supported for the requested resource.

+

The client should not repeat the request without modifications.

+

406

+

Not Acceptable

+

The server cannot fulfill the request according to the content characteristics of the request.

+

407

+

Proxy Authentication Required

+

This status code is similar to 401, but indicates that the client must first authenticate itself with the proxy.

+

408

+

Request Time-out

+

The server has timed out waiting for the request.

+

The client may repeat the request without modifications at a later time.

+

409

+

Conflict

+

The request could not be processed due to a conflict with the current state of the resource.

+

This status code indicates that the resource that the client is attempting to create already exists, or that the request has failed to be processed because of the update of the conflict request.

+

410

+

Gone

+

The requested resource has been deleted permanently and is no longer available.

+

411

+

Length Required

+

The server is refusing to process the request without a defined Content-Length.

+

412

+

Precondition Failed

+

The server did not meet one of the preconditions that the requester put on the request.

+

413

+

Request Entity Too Large

+

The server is refusing to process a request because the request entity is too large for the server to process. The server may close the connection to prevent the client from continuing the request. If the server is only temporarily unable to process the request, the response will contain a Retry-After header field.

+

414

+

Request-URI Too Large

+

The Request-URI is too long for the server to process.

+

415

+

Unsupported Media Type

+

The server is unable to process the media format in the request.

+

416

+

Requested range not satisfiable

+

The requested range is invalid.

+

417

+

Expectation Failed

+

The server has failed to meet the requirements of the Expect request-header field.

+

422

+

UnprocessableEntity

+

The request is well-formed but cannot be processed due to semantic errors.

+

429

+

TooManyRequests

+

The client has sent excessive number of requests to the server within a given time (exceeding the limit on the access frequency of the client), or the server has received an excessive number of requests within a given time (beyond its processing capability). In this case, the client should resend the request after the time specified in the Retry-After header of the response has elapsed.

+

500

+

InternalServerError

+

The server is able to receive the request but unable to understand it.

+

501

+

Not Implemented

+

The server does not support the function required to fulfill the request.

+

502

+

Bad Gateway

+

The server was acting as a gateway or proxy and received an invalid request from the remote server.

+

503

+

ServiceUnavailable

+

The requested service is invalid.

+

The client should not repeat the request without modifications.

+

504

+

ServerTimeout

+

The request cannot be fulfilled within a given time. This status code is returned to the client only if the Timeout parameter is specified in the request.

+

505

+

HTTP Version not supported

+

The server does not support the HTTP protocol version used in the request.

+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0311.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0311.html new file mode 100644 index 000000000..862894eb0 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0311.html @@ -0,0 +1,1837 @@ + + +

CDM Error Codes

+

If an error occurs in API calling, no result is returned. Identify the error cause based on the error codes of each API. If an error occurs in API calling, HTTP status code 4xx or 5xx is returned. The response body contains the specific error code and information. If you are unable to identify the cause of an error, contact customer service and provide the error code so that we can help you solve the problem as soon as possible.

+
  • Sample exception response
    {
    +  "errCode": "Cdm.0100",
    +  "externalMessage": "Job[jdbc2hive] doesn't exist."
    +}
    +
  • Parameter description +
    + + + + + + + + + + + + + + + + +

    Parameter

    +

    Mandatory

    +

    Type

    +

    Description

    +

    errCode

    +

    No

    +

    String

    +

    Error code

    +

    externalMessage

    +

    No

    +

    String

    +

    Error message

    +
    +
    +
  • Error code

    In the following error message, %s is a variable. In the actual situation, the parameter name, table name, job name, and link name are replaced with the actual values.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Error Code

    +

    Status Code

    +

    Error

    +

    Description

    +

    Solution

    +

    Cdm.0000

    +

    400

    +

    System error.

    +

    A system error occurs.

    +

    Contact customer service or technical support.

    +

    Cdm.0001

    +

    400

    +

    The resource does not exist or is invalid.

    +

    The requested resource does not exist or you have no permission to access the resource.

    +

    Contact customer service or technical support.

    +

    Cdm.0004

    +

    400

    +

    Invalid parameter type.

    +

    The input parameter does not match the parameter type.

    +

    Change the parameter value based on the error message and try again.

    +

    Cdm.0009

    +

    400

    +

    %s is not an integer or is beyond the value range [0, 2147483647].

    +

    The input parameter is not an integer or is beyond the value range.

    +

    Change the parameter value based on the error message and try again.

    +

    Cdm.0010

    +

    400

    +

    The integer must be within the range of [%s].

    +

    The parameter is missing or its length is 0.

    +

    Change the parameter value based on the error message and try again.

    +

    Cdm.0011

    +

    400

    +

    The parameter value exceeds the value range.

    +

    The parameter format is incorrect or the parameter value exceeds the value range. As a result, the parsing failed.

    +

    Check whether the parameter value is valid based on the error message. If it is not, correct it and try again.

    +

    Cdm.0012

    +

    400

    +

    JDBC driver is not found.

    +

    JDBC driver is not found.

    +

    Contact customer service or technical support.

    +

    Cdm.0013

    +

    400

    +

    Agent connection failure.

    +

    The agent fails to be connected.

    +

    It is possible that the network is disconnected, or no security group or firewall rule is configured to allow access. If the fault persists, contact technical support.

    +

    Cdm.0014

    +

    400

    +

    Invalid parameter.

    +

    The parameter is invalid.

    +

    Change the parameter value and try again.

    +

    Cdm.0015

    +

    400

    +

    Failed to parse the file.

    +

    The file fails to be parsed.

    +

    Check whether the content or format of the uploaded file is correct. If it is not, correct it and try again.

    +

    Cdm.0016

    +

    400

    +

    The file to be uploaded cannot be empty.

    +

    The uploaded file is empty.

    +

    Ensure that the file you uploaded is not empty and try again.

    +

    Cdm.0017

    +

    400

    +

    Failed to save the input value.

    +

    The input value cannot be saved.

    +

    Contact customer service or technical support.

    +

    Cdm.0018

    +

    400

    +

    The content of jobs or links is invalid.

    +

    The content of jobs or links is invalid.

    +

    Contact customer service or technical support.

    +

    Cdm.0019

    +

    400

    +

    Failed to delete the link from the database.

    +

    The link in the database fails to be deleted.

    +

    Try again later or contact customer service or technical support.

    +

    Cdm.0020

    +

    400

    +

    The string must contain the following substring: %s.

    +

    The verified parameter is empty or does not contain the specified substring.

    +

    Change the parameter value based on the error message and try again.

    +

    Cdm.0021

    +

    400

    +

    Failed to connect to server %s.

    +

    The server fails to be connected.

    +

    Contact customer service or technical support.

    +

    Cdm.0024

    +

    400

    +

    [%s] must be within the range of [%s].

    +

    The verified parameter is not in the specified value range.

    +

    Change the parameter value based on the error message and try again.

    +

    Cdm.0031

    +

    400

    +

    Failed to create data to be submitted.

    +

    Failed to create data to be submitted.

    +

    Contact customer service or technical support.

    +

    Cdm.0037

    +

    400

    +

    Failed to submit the job.

    +

    The job fails to be submitted.

    +

    Contact customer service or technical support.

    +

    Cdm.0051

    +

    400

    +

    Invalid submission engine: %s.

    +

    Invalid job engine name.

    +

    Specify a correct job engine and try again.

    +

    Cdm.0052

    +

    400

    +

    Job %s is running.

    +

    The job is running.

    +

    The operation cannot be performed because the job is running. Try again after the job completes.

    +

    Cdm.0053

    +

    400

    +

    Job %s is not running.

    +

    The job is not running.

    +

    Run the job and try again.

    +

    Cdm.0054

    +

    400

    +

    Job %s does not exist.

    +

    The job does not exist.

    +

    Check whether the job exists.

    +

    Cdm.0056

    +

    400

    +

    Failed to submit the job. Cause: %s.

    +

    The job fails to be submitted.

    +

    Locate the cause based on the error message, rectify the fault, and try again.

    +

    Cdm.0057

    +

    400

    +

    Invalid job execution engine: %s.

    +

    The job engine is invalid.

    +

    Specify a correct job engine and try again.

    +

    Cdm.0058

    +

    400

    +

    Invalid combination of submission and execution engines.

    +

    The combination of submission and execution engines is invalid.

    +

    Specify a correct job engine and try again.

    +

    Cdm.0059

    +

    400

    +

    Job %s has been disabled and cannot be submitted.

    +

    The job has been disabled and cannot be submitted.

    +

    Create a job and try again. Alternatively, contact customer service or technical support.

    +

    Cdm.0060

    +

    400

    +

    Link %s for this job has been disabled. The job cannot be submitted.

    +

    The link for this job has been disabled.

    +

    Change the link and submit the job again.

    +

    Cdm.0061

    +

    400

    +

    Connector %s does not support the specified direction. The job cannot be submitted.

    +

    The connector cannot be used as the source or destination of a job.

    +

    The connector cannot be used as the source or destination of a job. Change the connector and submit the job again.

    +

    Cdm.0062

    +

    400

    +

    The binary file is applicable only to the SFTP, FTP, HDFS, or OBS connector.

    +

    The connector is invalid.

    +

    Specify a correct connector and try again.

    +

    Cdm.0063

    +

    400

    +

    An error occurred when creating the table. Cause: %s.

    +

    The table fails to be created.

    +

    Locate the cause based on the error message, rectify the fault, and try again.

    +

    Cdm.0064

    +

    400

    +

    Incorrect data format.

    +

    The data format is incorrect.

    +

    Check whether the data format is correct based on the error message. If it is not, correct it and try again.

    +

    Cdm.0065

    +

    400

    +

    Failed to start the timer. Cause: %s.

    +

    The timer fails to be started.

    +

    Contact customer service or technical support.

    +

    Cdm.0066

    +

    400

    +

    Failed to obtain the sample value. Cause: %s.

    +

    The sample value fails to be obtained.

    +

    Contact customer service or technical support.

    +

    Cdm.0067

    +

    400

    +

    Failed to obtain the schema. Cause: %s.

    +

    The schema field fails to be obtained.

    +

    Contact customer service or technical support.

    +

    Cdm.0085

    +

    400

    +

    %s exceeds the maximum value %s.

    +

    The parameter value exceeds the maximum value.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0089

    +

    400

    +

    The configuration item [%s] does not exist.

    +

    The configuration item does not exist.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0100

    +

    400

    +

    Job [%s] does not exist.

    +

    The job does not exist.

    +

    Specify a correct job and try again.

    +

    Cdm.0101

    +

    400

    +

    Link [%s] does not exist.

    +

    The link does not exist.

    +

    Specify a correct link and try again.

    +

    Cdm.0102

    +

    400

    +

    Connector [%s] does not exist.

    +

    The connector does not exist.

    +

    Specify a correct connector and try again.

    +

    Cdm.0104

    +

    400

    +

    The job name already exists.

    +

    The job name already exists.

    +

    Rename the job and try again.

    +

    Cdm.0201

    +

    400

    +

    Failed to obtain the instance.

    +

    The instance fails to be obtained.

    +

    Contact customer service or technical support.

    +

    Cdm.0202

    +

    400

    +

    Unknown status.

    +

    The job status is unknown.

    +

    Try again later or contact customer service or technical support.

    +

    Cdm.0204

    +

    400

    +

    No MRS link available.

    +

    No MRS link is created.

    +

    Go to the Links page to create an MRS link and try again.

    +

    Cdm.0230

    +

    400

    +

    Failed to load the specified class: %s.

    +

    The class fails to be loaded.

    +

    Contact customer service or technical support.

    +

    Cdm.0231

    +

    400

    +

    Failed to initialize the specified class: %s.

    +

    The class fails to be initialized.

    +

    Contact customer service or technical support.

    +

    Cdm.0232

    +

    400

    +

    Failed to write data. Cause: %s.

    +

    Data fails to be written.

    +

    Contact customer service or technical support.

    +

    Cdm.0233

    +

    400

    +

    Data extraction exception. Cause: %s.

    +

    An exception occurs during data extraction.

    +

    Contact customer service or technical support.

    +

    Cdm.0234

    +

    400

    +

    Data loading exception. Cause: %s.

    +

    An exception occurs during data loading.

    +

    Contact customer service or technical support.

    +

    Cdm.0235

    +

    400

    +

    All data has been used up. Cause: %s.

    +

    All data has been used up.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0236

    +

    400

    +

    Invalid partitions have been retrieved from Partitioner.

    +

    Invalid partitions have been retrieved from Partitioner.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0238

    +

    400

    +

    %s cannot be left blank.

    +

    The parameter is invalid.

    +

    Change the parameter value based on the error message and try again.

    +

    Cdm.0240

    +

    400

    +

    Failed to obtain the status of file %s.

    +

    The file status fails to be obtained.

    +

    Contact customer service or technical support.

    +

    Cdm.0241

    +

    400

    +

    Failed to obtain the type of file %s.

    +

    The file type fails to be obtained.

    +

    Contact customer service or technical support.

    +

    Cdm.0242

    +

    400

    +

    File check exception: %s.

    +

    An exception occurs during file check.

    +

    Contact customer service or technical support.

    +

    Cdm.0243

    +

    400

    +

    Failed to rename %s to %s.

    +

    Rename failed.

    +

    Rename the job and try again.

    +

    Cdm.0244

    +

    400

    +

    Failed to create file %s.

    +

    The file fails to be created.

    +

    Check whether you have the permissions or try again later. If the fault persists, contact customer service or technical support.

    +

    Cdm.0245

    +

    400

    +

    Failed to delete file %s.

    +

    The file fails to be deleted.

    +

    Check whether you have the permissions or try again later. If the fault persists, contact customer service or technical support.

    +

    Cdm.0246

    +

    400

    +

    Failed to create directory %s.

    +

    The directory fails to be created.

    +

    Check whether you have the permissions or try again later. If the fault persists, contact customer service or technical support.

    +

    Cdm.0247

    +

    400

    +

    HBase operation failure. Cause: %s.

    +

    HBase operation failed.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0248

    +

    400

    +

    Failed to clear data %s. Cause: %s.

    +

    Data fails to be cleared.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0249

    +

    400

    +

    Invalid file name %s.

    +

    The file name is invalid.

    +

    Change the file name and try again.

    +

    Cdm.0250

    +

    400

    +

    Failed to perform operations on path %s.

    +

    Operations on path %s are not allowed.

    +

    Check whether you have the permissions or try again later. If the fault persists, contact customer service or technical support.

    +

    Cdm.0251

    +

    400

    +

    Failed to load data to HBase. Cause: %s.

    +

    Data fails to be uploaded to HBase.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0307

    +

    400

    +

    Failed to obtain the connection lease of the requested transaction. Cause: %s.

    +

    The connection lease for the requested transaction fails to be obtained.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0315

    +

    400

    +

    Link name %s already exists.

    +

    The link already exists.

    +

    Specify another link name and try again.

    +

    Cdm.0316

    +

    400

    +

    Failed to update the link that does not exist.

    +

    The link that does not exist cannot be updated.

    +

    Specify a correct link and try again.

    +

    Cdm.0317

    +

    400

    +

    Invalid link %s.

    +

    The link is invalid.

    +

    Specify a correct link and try again.

    +

    Cdm.0318

    +

    400

    +

    The job already exists and cannot be created repeatedly.

    +

    The job already exists.

    +

    Specify another job name and try again.

    +

    Cdm.0319

    +

    400

    +

    Failed to update the job that does not exist.

    +

    The job that does not exist cannot be updated.

    +

    Check whether the job to be updated exists. If it does, change the job name and try again.

    +

    Cdm.0320

    +

    400

    +

    Invalid job %s.

    +

    The job is invalid.

    +

    Contact customer service or technical support.

    +

    Cdm.0321

    +

    400

    +

    Link %s has been used.

    +

    The link has been used.

    +

    Release the link and try again.

    +

    Cdm.0322

    +

    400

    +

    Job %s has been used.

    +

    The job has been used.

    +

    Contact customer service or technical support.

    +

    Cdm.0323

    +

    400

    +

    The submission already exists and cannot be created repeatedly.

    +

    The submission already exists.

    +

    Try again later.

    +

    Cdm.0327

    +

    400

    +

    Invalid link or job %s.

    +

    Link or job %s is invalid.

    +

    Specify a correct link or job and try again.

    +

    Cdm.0411

    +

    400

    +

    Failed to connect to the file server.

    +

    An error occurs when connecting to the file server.

    +

    Contact customer service or technical support.

    +

    Cdm.0413

    +

    400

    +

    Failed to transfer data to the file server.

    +

    An error occurs in data transfer to the file server.

    +

    Contact customer service or technical support.

    +

    Cdm.0415

    +

    400

    +

    Failed to download files from the server.

    +

    An error occurs when downloading files from the file server.

    +

    Contact customer service or technical support.

    +

    Cdm.0416

    +

    400

    +

    Data extraction failure.

    +

    An error occurs when extracting data.

    +

    Contact customer service or technical support.

    +

    Cdm.0420

    +

    400

    +

    Source file or source directory unavailable.

    +

    The source file or source directory does not exist.

    +

    Check whether the source file or source directory exists. If it does not, specify a correct source file or directory and try again.

    +

    Cdm.0423

    +

    400

    +

    Duplicate files exist in the destination path.

    +

    Duplicate files exist in the destination path.

    +

    Delete duplicate files from the destination path and try again.

    +

    Cdm.0501

    +

    400

    +

    Invalid URI [%s].

    +

    The URI is invalid.

    +

    Specify a correct URI and try again.

    +

    Cdm.0518

    +

    400

    +

    Failed to connect to HDFS. Cause: %s.

    +

    HDFS fails to be connected.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0600

    +

    400

    +

    Failed to connect to the FTP server.

    +

    The FTP server fails to be connected.

    +

    It is possible that the network is disconnected, no security group or firewall rule is configured to allow access, the FTP host name cannot be parsed, or the FTP username or password is incorrect. If the fault persists, contact customer service or technical support.

    +

    Cdm.0700

    +

    400

    +

    Failed to connect to the SFTP server.

    +

    The SFTP server fails to be connected.

    +

    It is possible that the network is disconnected, no security group or firewall rule is configured to allow access, the SFTP host name cannot be parsed, or the SFTP username or password is incorrect. If the fault persists, contact customer service or technical support.

    +

    Cdm.0800

    +

    400

    +

    Failed to connect to the OBS server.

    +

    The OBS server fails to be connected.

    +

    It is possible that the OBS endpoint is inconsistent with the current region, the AK/SK pair is incorrect, the AK/SK pair is not the one of the current user, or no security group or firewall rule is configured to allow access. If the fault persists, contact customer service or technical support.

    +

    Cdm.0801

    +

    400

    +

    OBS bucket [%s] unavailable.

    +

    The OBS bucket does not exist.

    +

    The OBS bucket may not exist or is not in the current region. Specify a correct OBS bucket and try again.

    +

    Cdm.0831

    +

    400

    +

    Failed to connect to the KODO server. Cause: %s.

    +

    The KODO server fails to be connected.

    +

    Contact customer service or technical support.

    +

    Cdm.0900

    +

    400

    +

    Table [%s] unavailable.

    +

    The table does not exist.

    +

    Specify a correct table name and try again.

    +

    Cdm.0901

    +

    400

    +

    Failed to connect to the database server. Cause: %s.

    +

    The database server fails to be connected.

    +

    Contact customer service or technical support.

    +

    Cdm.0902

    +

    400

    +

    Failed to execute the SQL statement. Cause: %s.

    +

    The SQL statement fails to be executed.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0903

    +

    400

    +

    Failed to obtain metadata. Cause: %s.

    +

    Metadata fails to be obtained.

    +

    Check whether the quote character is correct or whether the database table exists when you create the link. If the fault persists, contact customer service or technical support.

    +

    Cdm.0904

    +

    400

    +

    Failed to retrieve data from the result. Cause: %s.

    +

    An error occurs when retrieving data from the result.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0913

    +

    400

    +

    Schema and SQL cannot be left blank at the same time.

    +

    Either Schema or SQL must be specified.

    +

    Specify one of them and try again.

    +

    Cdm.0916

    +

    400

    +

    In incremental reading mode, the previous value must be specified.

    +

    The previous value is not specified in incremental reading.

    +

    Specify the previous value and try again.

    +

    Cdm.0917

    +

    400

    +

    Previous value cannot be obtained without field check.

    +

    The field is missing.

    +

    Contact customer service or technical support.

    +

    Cdm.0921

    +

    400

    +

    Unsupported type %s.

    +

    The type is invalid.

    +

    Specify a correct type and try again.

    +

    Cdm.0925

    +

    400

    +

    The partition field contains unsupported values.

    +

    The partition field contains unsupported values.

    +

    Correct the values and try again.

    +

    Cdm.0926

    +

    400

    +

    Failed to obtain the schema field. Cause: %s.

    +

    The schema field fails to be obtained.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0927

    +

    400

    +

    The relay table cannot be empty.

    +

    The relay table cannot be empty.

    +

    Specify an empty relay table and try again.

    +

    Cdm.0928

    +

    400

    +

    Failed to transfer data from the relay table to the destination table.

    +

    An error occurs when transferring data from the relay table to the destination table.

    +

    Contact customer service or technical support.

    +

    Cdm.0931

    +

    400

    +

    The value of the schema field [%s] does not match that of the field [%s] in the result set.

    +

    The value of the schema field [%s] does not match that of the field [%s] in the result set.

    +

    Change the schema value to be the same as that in the result set and try again.

    +

    Cdm.0932

    +

    400

    +

    Failed to find the maximum value of the field.

    +

    The maximum value of the field cannot be found.

    +

    Contact customer service or technical support.

    +

    Cdm.0934

    +

    400

    +

    Tables with the same name exist in different schemas/catalogs.

    +

    Tables with the same name exist in different schemas/catalogs.

    +

    Contact customer service or technical support.

    +

    Cdm.0936

    +

    400

    +

    The number of dirty data records reaches the upper limit.

    +

    The number of dirty data records reaches the upper limit.

    +

    Edit the job and increase the number of dirty data records.

    +

    Cdm.0940

    +

    400

    +

    Precise match of the table name failed.

    +

    Precise match of the table name failed.

    +

    Specify a correct table name and try again.

    +

    Cdm.0941

    +

    400

    +

    Failed to connect to the server. Cause: [%s].

    +

    The server fails to be connected.

    +

    Check whether the IP address, host name, and port number are correct, and whether the network security group and firewall are correctly configured. Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.0950

    +

    400

    +

    Failed to connect the authentication information to the database.

    +

    The authentication information cannot be connected to the database.

    +

    Correct the authentication information and try again.

    +

    Cdm.0962

    +

    400

    +

    The host IP address must be specified.

    +

    No host IP address is specified.

    +

    Specify the host IP address and try again.

    +

    Cdm.0963

    +

    400

    +

    The host port must be specified.

    +

    No host port is specified.

    +

    Specify the host port and try again.

    +

    Cdm.0964

    +

    400

    +

    The database must be specified.

    +

    No database is specified.

    +

    Specify a database and try again.

    +

    Cdm.1000

    +

    400

    +

    Hive table [%s] does not exist.

    +

    The Hive table does not exist.

    +

    Specify a correct Hive table name and try again.

    +

    Cdm.1010

    +

    400

    +

    Invalid URI %s. URI must be null or valid.

    +

    The URI is invalid.

    +

    Specify a correct URI and try again. Correct URI examples:

    +
    • hdfs://example.com:8020/
    • hdfs://example.com/
    • file:///
    • file:///tmp
    • file://localhost/tmp
    +

    Cdm.1011

    +

    400

    +

    Failed to connect to Hive. Cause: %s.

    +

    Hive fails to be connected.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1100

    +

    400

    +

    Table [%s] unavailable.

    +

    The table does not exist.

    +

    Enter a correct table name and try again.

    +

    Cdm.1101

    +

    400

    +

    Failed to obtain the link. Cause: %s.

    +

    The link fails to be obtained.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1102

    +

    400

    +

    Failed to create the table. Cause: %s.

    +

    The table fails to be created.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1103

    +

    400

    +

    No rowkey is set.

    +

    No rowkey is set.

    +

    Set the rowkey and try again.

    +

    Cdm.1104

    +

    400

    +

    Failed to open the table. Cause: %s.

    +

    The table fails to be opened.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1105

    +

    400

    +

    Failed to initialize the job. Cause: %s.

    +

    The job fails to be initialized.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1111

    +

    400

    +

    The table name cannot be empty.

    +

    The table name is not specified.

    +

    Specify a correct table name and try again.

    +

    Cdm.1114

    +

    400

    +

    Rowkey is empty. Set it in field mapping.

    +

    Rowkey is empty.

    +

    Fix the error based on the error message.

    +

    Cdm.1115

    +

    400

    +

    Columns is empty. Set it in field mapping.

    +

    Columns is empty.

    +

    Fix the error based on the error message.

    +

    Cdm.1116

    +

    400

    +

    Duplicate column name. Reset it in the field mapping step.

    +

    The column name already exists.

    +

    Fix the error based on the error message.

    +

    Cdm.1117

    +

    400

    +

    Failed to check whether the table exists. Cause: %s.

    +

    An error occurs when checking whether the table exists.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1118

    +

    400

    +

    Table %s does not contain the column family %s.

    +

    The table does not contain the specified column family.

    +

    Specify a column family and try again.

    +

    Cdm.1120

    +

    400

    +

    The table contains data. Clear the data or reset the parameter to determine whether to clear the table data before importing the table.

    +

    The table contains data. Clear the data or reset the parameter to determine whether to clear the table data before importing the table.

    +

    Fix the error based on the error message.

    +

    Cdm.1121

    +

    400

    +

    Failed to close the link. Cause: %s.

    +

    The link fails to be closed.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1201

    +

    400

    +

    Failed to connect to the Redis server. Cause: %s.

    +

    The Redis server fails to be connected.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1203

    +

    400

    +

    Failed to extract data from the Redis server. Cause: %s.

    +

    Data fails to be extracted from the Redis server.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1205

    +

    400

    +

    The prefix of the Redis value cannot be empty.

    +

    The prefix of the Redis value cannot be empty.

    +

    Delete the whitespace before the Redis prefix and try again.

    +

    Cdm.1206

    +

    400

    +

    The storage type of the Redis value must be string or hash.

    +

    The storage type of the Redis value must be string or hash.

    +

    Fix the error based on the error message.

    +

    Cdm.1207

    +

    400

    +

    When the value storage type is string, Value Delimiter must be specified.

    +

    The value storage type is string, but Value Delimiter is not specified.

    +

    Specify a value delimiter and try again.

    +

    Cdm.1208

    +

    400

    +

    columnList of Redis must be specified.

    +

    columnList of Redis must be specified.

    +

    Specify columnList and try again.

    +

    Cdm.1209

    +

    400

    +

    Redis Key Delimiter cannot be empty.

    +

    Redis Key Delimiter cannot be empty.

    +

    Specify a correct delimiter and try again.

    +

    Cdm.1210

    +

    400

    +

    primaryKeyList of Redis must be specified.

    +

    primaryKeyList of Redis is not specified.

    +

    Specify primaryKeyList and try again.

    +

    Cdm.1211

    +

    400

    +

    primaryKeyList of Redis must exist in columnList.

    +

    primaryKeyList of Redis does not exist in columnList.

    +

    Specify primaryKeyList and try again.

    +

    Cdm.1213

    +

    400

    +

    Redis Server Address must be specified.

    +

    Redis Server Address is not specified.

    +

    Specify Redis Server Address and try again.

    +

    Cdm.1301

    +

    400

    +

    Failed to connect to the MongoDB server. Cause: %s.

    +

    The MongoDB server fails to be connected.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1302

    +

    400

    +

    Failed to extract data from the MongoDB server. Cause: %s.

    +

    Data fails to be extracted from the MongoDB server.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1304

    +

    400

    +

    The MongoDB server set must be specified.

    +

    The MongoDB server set is not specified.

    +

    Specify the MongoDB server set and try again.

    +

    Cdm.1305

    +

    400

    +

    Server Address of MongoDB must be specified.

    +

    Server Address of MongoDB is not specified.

    +

    Specify Server Address and try again.

    +

    Cdm.1306

    +

    400

    +

    The database name of the MongoDB service must be specified.

    +

    The database name of the MongoDB service is not specified.

    +

    Specify a database and try again.

    +

    Cdm.1307

    +

    400

    +

    serverlist of MongoDB must be specified.

    +

    serverlist of MongoDB is not specified.

    +

    Specify serverlist and try again.

    +

    Cdm.1501

    +

    400

    +

    Failed to connect to the Elasticsearch server. Cause: %s.

    +

    The Elasticsearch server fails to be connected.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1502

    +

    400

    +

    Failed to write data to the Elasticsearch server. Cause: %s.

    +

    Data fails to be written to the Elasticsearch server.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1503

    +

    400

    +

    Failed to close the Elasticsearch link. Cause: %s.

    +

    The Elasticsearch link fails to be closed.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1504

    +

    400

    +

    Failed to obtain the Elasticsearch index. Cause: %s

    +

    An error occurs when obtaining the Elasticsearch index.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1505

    +

    400

    +

    Failed to obtain the Elasticsearch type. Cause: %s

    +

    An error occurs when obtaining the Elasticsearch type.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1506

    +

    400

    +

    Failed to obtain the Elasticsearch field. Cause: %s

    +

    An error occurs when obtaining the Elasticsearch file field.

    +

    Locate the cause based on the error message. If the fault persists, contact customer service or technical support.

    +

    Cdm.1508

    +

    400

    +

    The host name or IP address of the Elasticsearch server must be specified.

    +

    The host name or IP address of the Elasticsearch server is not specified.

    +

    Specify the host name or IP address and try again.

    +

    Cdm.1510

    +

    400

    +

    The Elasticsearch index must be specified.

    +

    The Elasticsearch index is not specified.

    +

    Specify an index and try again.

    +

    Cdm.1511

    +

    400

    +

    The Elasticsearch type must be specified.

    +

    The Elasticsearch type is not specified.

    +

    Specify a type and try again.

    +

    Cdm.1513

    +

    400

    +

    columnList must contain the field type definition.

    +

    columnList does not contain the field type definition.

    +

    Include the field type definition and try again.

    +

    Cdm.1514

    +

    400

    +

    columnList must contain primaryKey.

    +

    columnList does not contain primaryKey.

    +

    Specify primaryKey and try again.

    +

    Cdm.1516

    +

    400

    +

    Invalid column name %s.

    +

    The column name is invalid.

    +

    Enter a correct column name and try again.

    +

    Cdm.1517

    +

    400

    +

    Failed to obtain the number of documents.

    +

    An error occurs when obtaining the number of documents.

    +

    Contact customer service or technical support.

    +

    Cdm.1519

    +

    400

    +

    Data extraction exception.

    +

    An error occurs when extracting data.

    +

    Contact customer service or technical support.

    +

    Cdm.1601

    +

    400

    +

    Failed to connect to the server.

    +

    The server fails to be connected.

    +

    Contact customer service or technical support.

    +

    Cdm.1603

    +

    400

    +

    Failed to obtain the sample value of topic %s.

    +

    The sample value of topic %s fails to be obtained.

    +

    Contact customer service or technical support.

    +

    Cdm.1604

    +

    400

    +

    No data contained in topic%s.

    +

    No data exists in the topic.

    +

    Locate the cause. Alternatively, change the topic and try again.

    +
    +
    +
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0313.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0313.html new file mode 100644 index 000000000..7620bed64 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0313.html @@ -0,0 +1,346 @@ + + +

DLF Error Codes

+

The error response is in the following format:

+

{

+

"error_code":"DLF.0100",

+

"error_msg":"The job not found"

+

}

+

Table 1 describes the error codes.

+

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Error codes

Status Code

+

Error Code

+

Error Message

+

Solution

+

400

+

DLF.0100

+

The job does not exist.

+

Ensure that the job exists.

+

400

+

DLF.0101

+

The job quota has reached the upper limit.

+

Apply for a higher quota.

+

400

+

DLF.0102

+

The job name has been used by another job.

+

Try another name.

+

400

+

DLF.0136

+

This API can be called only for batch jobs.

+

Check the job.

+

400

+

DLF.0137

+

The job instance does not exist.

+

Ensure that the job instance exists.

+

400

+

DLF.0201

+

The script fails to be created.

+

Check the script.

+

400

+

DLF.0202

+

The script name has been used by another script.

+

Try another name.

+

400

+

DLF.0203

+

The script fails to be modified.

+

Check the script.

+

400

+

DLF.0802

+

The specified parameter is not configured.

+

Check the parameter.

+

400

+

DLF.0803

+

The OBS path is invalid.

+

Check the OBS path.

+

400

+

DLF.0810

+

The queried task does not exist.

+

Check that the task exists.

+

400

+

DLF.0815

+

The OBS file fails to be accessed.

+

Check the OBS file.

+

400

+

DLF.1006

+

The job node is empty.

+

Check the node.

+

400

+

DLF.1242

+

The OBS bucket does not exist.

+

Ensure that the OBS bucket exists.

+

400

+

DLF.3004

+

The job name cannot be left blank.

+

Check the job name.

+

400

+

DLF.3018

+

The job name is invalid.

+

Check the job name.

+

400

+

DLF.3025

+

The job scheduling parameter is invalid.

+

Check the job scheduling parameter.

+

400

+

DLF.3050

+

The job description is invalid.

+

Check the job description.

+

400

+

DLF.6201

+

The script does not exist.

+

Ensure that the script exists.

+

400

+

DLF.6205

+

The script execution instance does not exist.

+

Check that the script execution instance exists.

+

400

+

DLF.6241

+

The resource to be queried does not exist.

+

Ensure that the resource exists.

+

400

+

DLF.6247

+

The script type is not specified.

+

Check the script.

+

400

+

DLF.6253

+

The script quota has reached the upper limit.

+

Apply for a higher quota.

+

400

+

DLF.6258

+

The directory contains data that cannot be deleted.

+

Delete the data in the directory first.

+

400

+

DLF.6259

+

A resource with the same name already exists in the directory.

+

Try another name.

+

400

+

DLF.6263

+

The resource type is invalid.

+

Check the resource type.

+

400

+

DLF.6264

+

The OBS path of the resource file is invalid.

+

Check the OBS path.

+

400

+

DLF.6265

+

The resource description is invalid.

+

Check the resource description.

+

400

+

DLF.6271

+

Each user can create only one DLI connection.

+

Check the DLI data connection.

+

400

+

DLF.6309

+

The connection name has been used by another connection.

+

Try another connection name.

+

400

+

DLF.6322

+

The data connection does not exist.

+

Check that the data connection exists.

+

400

+

DLF.6323

+

The connection type cannot be modified.

+

Check the parameter type.

+

400

+

DLF.6416

+

The cluster has been occupied by another connection.

+

Check the cluster.

+

400

+

DLF.6418

+

Either the DWS cluster name or the access address and port number of the cluster must be configured.

+

Check the DWS cluster name or the access address and port of the cluster.

+

400

+

DLF.6888

+

Invalid account permissions.

+

Check the account permissions.

+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0314.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0314.html new file mode 100644 index 000000000..3bb56edf5 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0314.html @@ -0,0 +1,42 @@ + + +

Project ID and Account ID

+

Obtaining a Project ID and Account ID

You can obtain the project ID and account ID by performing the following steps:
  1. Register with and log in to the management console.
  2. Hover the cursor on the username in the upper right corner and select My Credentials from the drop-down list.
  3. On the My Credentials page, obtain the account name and account ID, and obtain the project ID from the project list.
+
+
+

Obtaining a Project ID by Calling an API

You can obtain a project ID by calling the API used to query projects based on specified criteria.

+

The API for obtaining a project ID is GET https://{Endpoint}/v3/projects/, where {Endpoint} indicates the endpoint of IAM.

+

An endpoint is the request address for calling an API. Endpoints vary depending on services and regions. You can obtain endpoints from Regions and Endpoints.

+

For details about API authentication, see Authentication.

+

The following is a response example. The value of id under projects is the project ID. If multiple IDs are returned, obtain the desired one based on your actual region (name).

+
{
+    "projects": [
+        {
+            "domain_id": "65382450e8f64ac0870cd180d14e684b",
+            "is_domain": false,
+            "parent_id": "65382450e8f64ac0870cd180d14e684b",
+            "name": "region-name",
+            "description": "",
+            "links": {
+                "next": null,
+                "previous": null,
+                "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99"
+            },
+            "id": "a4a5d4098fb4474fa22cd05f897d6b99",
+            "enabled": true
+        }
+    ],
+    "links": {
+        "next": null,
+        "previous": null,
+        "self": "https://www.example.com/v3/projects"
+    }
+}
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0316.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0316.html new file mode 100644 index 000000000..c89ce3c09 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0316.html @@ -0,0 +1,15 @@ + + +

Data Development Job ID

+

A job ID (jobid) is required for some URLs when an API is called. To obtain a job ID, perform the following operations:

+
  1. Log in to the DataArts Studio console. Locate an instance and click Access. On the displayed page, locate a workspace and click DataArts Factory.
    Figure 1 DataArts Factory
    +
  1. In the navigation pane, choose Monitoring > Monitor Job, and click Batch Job Monitoring or Real-Time Job Monitoring based on the job type.
  2. Click a job name to go to the job monitoring page.
    In the URL of the page, the job ID is after the job type (batchJobDetail or realTimeJobDetail) and job name, as shown in the following figure.
    Figure 2 Obtaining a job ID
    +
    +
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0317.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0317.html new file mode 100644 index 000000000..289c52571 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0317.html @@ -0,0 +1,30 @@ + + +

Parsing a Stream in a Response Message

+

The response messages of the job export API and connection export API are streams that need to be converted to files. For details, see the following sample code:

+
String EXPORT_JOB_URL = "https://{endpoint}/v1/{project_id}/jobs/{job_name}/export";
+
+try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
+    HttpPost httpPost = new HttpPost(EXPORT_JOB_URL);
+    httpPost.setHeader("Content-Type", "application/json; charset=UTF-8");
+    httpPost.setHeader("Accept", "application/octet-stream");
+    httpPost.setHeader("X-Auth-Token", token);
+
+    HttpResponse response = httpClient.execute(httpPost);
+    int statusCode = response.getStatusLine().getStatusCode();
+    if (statusCode == 200) {
+        String filePath = "d:";
+        String fileName = "job.zip";
+        FileOutputStream fileOutputStream = new FileOutputStream(filePath + fileName);
+        response.getEntity().writeTo(fileOutputStream);
+    } else {
+        System.out.println(statusCode);
+    }
+}
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0318.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0318.html new file mode 100644 index 000000000..793d452e4 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0318.html @@ -0,0 +1,150 @@ + + +

Common Message Headers

+

Common request header fields

Table 1 describes common request headers.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 Common request header fields

Field

+

Description

+

Mandatory

+

Example

+

Content-Type

+

Specifies the request body MIME type. This field is mandatory and its default value is application/json. Other values of this field will be provided for specific APIs if any.

+

Yes

+

The default value is application/json.

+

Content-Length

+

Specifies the length of the request body. The unit is byte.

+

No

+

3495

+

X-Language

+

Specifies the request language.

+

No

+

en_us

+

X-Project-Id

+

Specifies a project ID. Obtain the project ID by following the instructions in Project ID and Account ID.

+

No

+

e9993fc787d94b6c886cbaa340f9c0f4

+

X-Auth-Token

+

Specifies a user token.

+

The user token is a response to the API used to obtain a user token. This API is the only one that does not require authentication.

+

The token is the value of X-Subject-Token in the response header.

+

This field is mandatory for token authentication.

+

The following is part of an example token:

+

MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ

+

X-Sdk-Date

+

Time when the request is sent. The time is in YYYYMMDD'T'HHMMSS'Z' format.

+

The value is the current GMT time of the system.

+

This field is mandatory for AK/SK-based authentication.

+

20150907T101459Z

+

Host

+

Specifies the server domain name and port number of the resources being requested. The value can be obtained from the URL of the service API. The value is in the format of hostname[:port]. If the port number is not specified, the default port is used. The default port number for HTTPS is 443.

+

This field is mandatory for AK/SK-based authentication.

+

code.test.com

+

or

+

code.test.com:443

+

Authorization

+

Authentication information.

+

The value can be obtained from the request signing result.

+

This field is mandatory for AK/SK-based authentication.

+

SDK-HMAC-SHA256 Credential=QRUP2R3QFNAOVAWMYHZW/20160202/northchina/test/sdk_request, SignedHeaders=host;x-sdk-date, Signature=9d8b56b055c0e1f7a9498d881a7cb726be91b4f0cde1773b0b1557e987a480ce

+

workspace

+

Workspace ID. For details about how to obtain it, see DataArts Studio Instance ID and Workspace ID.

+
  • You do not need to set this field when calling a CDM API because in that case, only the default workspace can be used.
  • When a DataArts Factory API is called, data in the default workspace is queried by default. To query data in other workspaces, include this header in the query request.
+

d1cd7861478748a6925bc02f47c69279

+

X-Dlm-Type

+

DataArts DataService edition, which is Exclusive

+

This parameter is mandatory for calling DataArts DataService APIs.

+

EXCLUSIVE: exclusive edition

+
+
+
+

Common response headers

Table 2 describes common response headers.

+ +
+ + + + + + + + + + + + + +
Table 2 Common response headers

Parameter

+

Description

+

Content-Length

+

Length of the response body. The unit is byte.

+

Date

+

Time when a response is returned

+

Content-type

+

Request body MIME type

+
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0330.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0330.html new file mode 100644 index 000000000..99771158b --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0330.html @@ -0,0 +1,32 @@ + + +

Change History

+
+
+ + + + + + + + + + + + + +

Release Date

+

What's New

+

2023-05-30

+

Update the following sections:

+ +

2023-04-30

+

Update the following sections:

+ +

2023-01-30

+

This is the first official release.

+
+
+
+ diff --git a/docs/dataartsstudio/api-ref/dataartsstudio_02_0350.html b/docs/dataartsstudio/api-ref/dataartsstudio_02_0350.html new file mode 100644 index 000000000..331921096 --- /dev/null +++ b/docs/dataartsstudio/api-ref/dataartsstudio_02_0350.html @@ -0,0 +1,16 @@ + + +

DataArts Studio Instance ID and Workspace ID

+

Obtaining a DataArts Studio Instance ID and Workspace ID

To obtain a DataArts Studio instance ID and workspace ID, perform the following steps:
  1. On the DataArts Studio console, locate a workspace and click any module, such as Management Center.
    Figure 1 Management Center
    +
  2. On the Management Center page, obtain the values of instanceId and workspace in the browser address bar, which are the instance ID and workspace ID, respectively.
    As shown in Figure 2, the instance ID is 6b88…2688, and the workspace ID is 1dd3bc…d93f0.
    Figure 2 Obtaining the instance ID and workspace ID
    +
    +
+
+
+
+
+ +
+ diff --git a/docs/dataartsstudio/api-ref/en-us_image_0000001321929240.gif b/docs/dataartsstudio/api-ref/en-us_image_0000001321929240.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfbc91a43614681240864aa0bc5484938d7db8f6 GIT binary patch literal 29752 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

MsdAc+3IvaDb`0+@{6{iKa+%bXzHOo7P%Q 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 literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/en-us_image_0000001322248848.png b/docs/dataartsstudio/api-ref/en-us_image_0000001322248848.png new file mode 100644 index 0000000000000000000000000000000000000000..d4a37a976d4576d256107faeb20bd06794b51b43 GIT binary patch literal 51740 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%0AZD@BjI{u{Gzp=uHI(1CKApP%TB6 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μMKUP;j3tZz2lr=fW<}VJLdca4MNKQ^pP%GM| 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%0DI|TR7s;}wc6-5oFUiA` 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 F{{n(UHWvT@ literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/en-us_image_0000001373289293.png b/docs/dataartsstudio/api-ref/en-us_image_0000001373289293.png new file mode 100644 index 0000000000000000000000000000000000000000..d17b6fda2fa6d9648ccfd24825070536e9e7ff6d GIT binary patch literal 22462 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 F{{n(UHWvT@ literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/en-us_image_0000001373408961.png b/docs/dataartsstudio/api-ref/en-us_image_0000001373408961.png new file mode 100644 index 0000000000000000000000000000000000000000..50edae77073706d6e55b6f4a3616b72f7aca6de1 GIT binary patch literal 16133 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 ?pUP7KFTN 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 literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/public_sys-resources/caution_3.0-en-us.png b/docs/dataartsstudio/api-ref/public_sys-resources/caution_3.0-en-us.png new file mode 100644 index 0000000000000000000000000000000000000000..60f60762138fe7d98fa081415cf26a4943897779 GIT binary patch literal 2752 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 literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/public_sys-resources/icon-arrowdn.gif b/docs/dataartsstudio/api-ref/public_sys-resources/icon-arrowdn.gif new file mode 100644 index 0000000000000000000000000000000000000000..379428032932289326e52c2772bd90ba3d88b906 GIT binary patch literal 1887 zcmZ?wbhEHbCgqow z*eU^C3h_d20o>TUVm+{T^pf*)^(zt!^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^ z7NqJ2r55Lx7A2Jm>Ih`8X1|p zSh~8p7&*iAy5uL9=BDPA!1Sgd^t#~G3rY&P1wfl!Qj0RnQd8WD@^clyUbf1_?G{Iz z=0WwQ;C71>PQCg-$LND17Ac}(Lcr7mV#1RxkONQnsd>QEUIa|mjQ{`r{qy_R&mZ5v zef{$J)5j0*-@SeF`qj%9&!0Vg^7zri2lwyYy>t84%^TORUA=Po(!~qs&z(JU`qar2 z$B!L7a`@1}1N-;w-Lrew&K=vgZQZhY)5ZeMTG_VdAT{+S(zE> zX{jm6Nr?&Zaj`McQIQehVWA3>*p!%p5Wn0u7E$th{n6D>ft^YU5&dnB%c=(a~-RV>2EO25SIA CZ-yWM literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/public_sys-resources/icon-arrowrt.gif b/docs/dataartsstudio/api-ref/public_sys-resources/icon-arrowrt.gif new file mode 100644 index 0000000000000000000000000000000000000000..6aaaa11c23e919c4798d7dcd2b1ae98dd35dd316 GIT binary patch literal 1890 zcmZ?wbhEHb7yetOgf{ zR2HP_2c;J0mlh?b0+lO+tSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu08>u$h8JcxGNo zetEGbSiP^Wm1kaYNn&1ds;7&s63_&_%*+%k11Cod14Ab>6ALqQLqk^=3j-5FHzP|& zBUd9gQwvj9m|mCsATTyHM;rzL?XHK6w zdE)r7qel)OI(T6JzP)>P@7lRz`?jrHHgDRvVg0(bYgVsXxnlXUrArnsTDV~Tyt#8` z&zd=7`n0K2CQq6;p}()Ur@O1OqrI)QrMaoGp}wxRrn;)KqP(oMq`0WCAU`iRCp#-M zBRwrOB{?ZEAwDiPCORrIB0MZKBseHAz~9f;$J@)(!`;o*#o5Wx!QRf+#@fo#!raW% z#MsEtKwnQ+M_Wr%LtRZ(MOjHvL0(Q)Mp{ZzLR?H#L|8~rfS-?-hntI&gPo0)g_((w zfkE*n3y@@B&;b#k`jUY|nSq%>!ec`MLnAA%oR7zc2TpB#@>)|YCO&lN;uMU!b7Eqm H1A{dHTIz>f literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/public_sys-resources/icon-caution.gif b/docs/dataartsstudio/api-ref/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..079c79b263f4b48089f3b3256154c73e7699593f GIT binary patch literal 1086 zcmW+#YfRQ<6hA3LZMyP?V}KhnEtF{Q4vGxS52AozEVM85nq$#%tv8gRF!3GhgM?_) zd5Luv3SKrXFTGCpn$y>EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/public_sys-resources/icon-danger.gif b/docs/dataartsstudio/api-ref/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..079c79b263f4b48089f3b3256154c73e7699593f GIT binary patch literal 1086 zcmW+#YfRQ<6hA3LZMyP?V}KhnEtF{Q4vGxS52AozEVM85nq$#%tv8gRF!3GhgM?_) zd5Luv3SKrXFTGCpn$y>EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/public_sys-resources/icon-huawei.gif b/docs/dataartsstudio/api-ref/public_sys-resources/icon-huawei.gif new file mode 100644 index 0000000000000000000000000000000000000000..a31d60f895af919d33855217ca02daf4093136d7 GIT binary patch literal 2767 zcmV;=3NZCYNk%w1VaEV40Oo%H*MEWRpQG)+!RUX6`tR@RDKg4%aM+KK_}}3B+S#H2 z0rt<*_Nl4!k%7|y4fwgY^uNNg00pZ61NzIz@q2NyEiLIHE%S?g^NEbfKt%9!YU?yQ z^qh&+U}WbD8{q&E?Mq9<013DN2H5})@N8$u01CkX3Fs9f^{bWHKuGLFOZ1kS)=*aD z01@p=RQ9r(>pemK^YiUeQPU6`>94W!hk53YleQ2Q>_SB7aCr2fj@; z@a|n&?qX^0W?<$J9`9pa@`8Bj9VzWnT-qQk!yqQl01W6ECF?mp=LHtlFgo|Iv-PHs z+HiFBprpVM7yReuz5od5zrUyu5$;)5@{gDATVup9HOgRO=U{2(0u;*t3-Hg-^OuGE z;N9vkH}7a--=Co1Fg#jPP{_r^k&B8kCM0%mZLFxL@$v9KH8SJk;?~sDy0^BTnwV%{ zUQ9zlgnfM9U}wHiP~xwz{`dCrZ*%7e7{X9d^{Afom69VE761SLA^8LW004ggEC2ui z0LK6@000O7fPaF6goTEOh>41ejE#|lU+C8$A-c{-jb1$W_sAqMbtN`+RZ#DGFR(dnrcRE3N%f+!F;*y7(oOv#1FPiAwy#YP$z^Q7U<_8BLs** zMSr>_(L`oBgxA?;z>x3<218xJ;14v)$l4!yG&Wrk_I1$$0*;vB$B=#`at4uppizkb zkVG1Zq>_oSkp_`a7SaZiZXiMjk!m2q29j+I!X%PpB5B5wO%5V}2qJRl1%NsHfxr&G z=|x^!dAKu_41Dql0y7LOA)N(0dcZ^rABfh-m_;ITB$a5UdB~$fR(S{-NTzYfmPE#Z z$dyBCddM0`(jjJQ3^=Hu0tmpW@WUTds1O^W zCv4aPqTVsWsFRSgiX^m^Dgr8zYZ&qdl5-rgEs}5?A_tOhoSJHxtD4)WAg_+-CV)r$ z0l^3=PP3O0e*huI221P;!@n>Lqi=>hZs_9&J75vyw2nR*>5$YWnFy(5hH1$EwSHt- z2&Y^c@+FZL3&QBRsy<8z0uiv;-+usJMIdJZ34w1G1pu?}1~|L$M-&7rk*ppEBV3oW z3{UE?w2~S^sl>(pGc6ETQUgwH}48uSiAJo0SA(QX~FrGzYvq#TC0!EGVmk{K=`YG64w z*^4Iq2N`U_YT26(@Ww;iA6V3a3V*n8!U;+!QN-&o;K;WJKrdVR4kI*6wC0H)Z8+gt z8&Y|wjA~4X(?lBohtwStGUbrnULHxSg=BE{y8s3-FXI^_2KJ7l* zPUi?^WVSHxgDj2s;6@ith~r!?-DM$hAerqT7$efv{s0FgQSEnvBN74j@P$DTKnvHC zONlTuy0+nk2Y*mO7rMX%Cg?#AOZY{0)h5f{2_S7&W;+3~xxv`varUz{DmpF%e^`f&wJ41t9(5fhwzv1mBc| z0U*EuBM2j%FvtTFnh*k5Fk|UZh`TZf2my8Qf){uKMUtgzel#qE{5o z`T+owlz=pEZ~#HrKnm`Pm2OzzgBhrem4EOJodD;_ahfxf-U+}Ak|4_v=x&*|EE67c z`G;K+;#whFp8pE*u^;}yhknQwAj5S;KNQlDsB)$xqbbb@AmI*w_<|O)xy2+vAOLDp z8yCVE${l#|oS_`S5dZ^$BP4;HUf`rVX&Fy4%@bn4W7;49dBA^~$q>dQOL?8kgXdnQvsYOnDfj24t0FVQ&GJsH);SXF0X(+eq z0|aFCq_QkQ2uwgnL@)|$U)!lnaS7A<-BO9Aav~Zq1~shtZ;*=2X&Qw1zoAY~flO_x zQ=i%a0w5p*o16;-5U|cJ{sE(En`{^}sx}@hzy~=vDN0qkRui}|sdcU4U8UAnL&&wT ze-NTA73oVe_41G0LefE{2Z>hMA+geI=u@QtfIkQT2`1nUZwBxt8^}v-apD4J9dHDm z*r2j$RqI-*fP_WBP>(V+WFp;)q}Cd-rO7KqPBT@AJ}!>D^n`Dbmde!NE;eOIpur!e zT2+HIfiCh&!V$`4~D_J+6+9nP?X4+~QQR3Nd6O>yUni+~O!R{(#Yf%|x3 zV=w6V57*_SoPYe_5lO*{ETyMCXS!kI{qmTJC@5?}tYs@Z`Gp%cnIOCjX8WdC#YjMN znOSg%0i?hn3uwZe>0DG@D8{!L9NVviU!0?6(AlZm;xWpa)Zb-c0Yf<`I615cvC$3@R|NPo+jf8PRu)%BB zhMd<%u5!4#ylXATHvtr$a54bk<~ZL%26n#lMX-S98Gr)LaZUq?L;OQXHv|E!0Ok|h zR|}ywHv~IJbrC%JsW+&2(zpJHJ2XAlm3#yMI(PL)OS76>Px~OC`E{mNAnK0zLI%qI z)ZlJG?RXaiuD@;tv`>NzH;90J?Vk56!rvj>leB^Xjy?$j0N@7pwE`ImPx(Jo;pSvu Vyd?-=a{xfJ@}LjB=qC{f06U7uGEOJ7jGVWt0R$WZ8s=je-u*DOe&kq9}!i z4KyN^y7WUtlMt&*F%bljtRbDEJamX6>@vOi{twMwE+=kqtJr%yLc-a1j}Z>-)`f9GBO%WDhy=L0>5=eLzUZCI?G``P_| zXl3c^-NL}=_M!Zh=FG7pU)shB58htr9~}O0uVbq2_rt-Fxv_(zmmdB7)lfOReyZ>D zrqum6#Z#+~moGM-oS4Ziby(A(@4L&ZrWcR4wV&_mTide#$G4kXKF-|cGp}2pJe$2t GE&l)<3Z_>8 literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/public_sys-resources/icon-notice.gif b/docs/dataartsstudio/api-ref/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..409070650a49518feb1624c624d814c3bfa63d2e GIT binary patch literal 962 zcmb7D&r8&C5S<{wSd_qn6)U)w5LOaRh!N}_*49lD)S!dZp@M<3gPIX|@UR9-fz+X3 zAaT9)OY{xZtO-;RC85Vab;JEUNIMS5f^r$7-e%-XK`j{0+N$CsgpRd6B1wp z8dw-cH^rU^H4`&7qgabf)l^K`l!66{q9$U(CKRO5%W5pfY)s&YQ6n`HBR0ZTum%`N zgC%I8hQ+`JG_WvCAt-W$sIn@BKCDG1qQWW^a=`*c7G+i@s0S(ZDv1&+K_2`7O-#cM z=m!ZX1Z#kSG+3e)Jg^wpfCd(Yb5TZ)U=a!DwsG z)Z`|1ejMK4ap%CHj;%+>T6=D++5I=uBbQ$fZ48cf{hV1}9&Njl-I}i7e0#6Hdug@s zsr-57_=gLr&9Ros$k}}M>tJ77=hEJ}iPaZ%8|P+gUbS|Oj}5I{|5nZZc)C1$e*Rj` d`09hYXJ4M@PhCx)dHK8WZo1*|*q+^V@*ncduk8Q; literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/public_sys-resources/icon-tip.gif b/docs/dataartsstudio/api-ref/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..c47bae05c9fd17c02a851d96cfac67bf194498d8 GIT binary patch literal 879 zcmchWKWmj?48@OdDOZPr)a61!OE4yGD)salg#|^Ix$qIEF#uk)V>D{95e^!2r`i+9t# zTMu5YtUcd+@#gp0tDE;9ug>oLIzL$6dOx4-t#2PKExu1KulwoYeD?Os#mVO%AMWih HO|EMGZQ&sWI^~+e%qWysRPK%BSD+f4-fabAGq;|Cf|4nO{(o zMH%#n$oXf^sdM5SJ4e1UbEeM389O82RCB6M#VI=_KP%=$orn{5LVlIau{svV?3jS$ z$Q-F7am0>L02|Q2!ZN1G^Z2J`V#a3VX;G<~iYc3tSAnLeiI}hnc~O{UH5OwwCTPT} zks65+8-W$70S3`f30dfY7}$UY7M95y@-?2QvMPChphYF3!YbtLLIs*E%B)Oq4^fy^ z5+zoGJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{V3`d>b_$i;xcz{y>Y0S(uP3>_P>a zLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf}M1C4=)Odu8AxQWG zEh;Aearj(=d;4Z^LLYN*6+asU?Nbl3^Q%D|{s@6Xj}(aZHwkoj-~bw*1FnSd;0aX! zUW<-TPD&b;6s;@zw7K~4mF9cDuK&BQ;b_N-Cj%R=CnEjde9%~1kk}vYY^@mTTNm%F z?mbrf*~d#iX;?ITDf(MHQdK;&p(ek&e9qe?*&A0E)mG(1s`J*pn^#ttId4vCXjV$j zj464u)2F9Q$V#0!dHk4(FDB#D&wP^f0*q1)G?4!%Xe>;ROD~Oee-}xfJUd+aa_0AK zFP$vgR2te>+%}b$hVw&Ni`yT>F5LNRM@_utk68Piwi5??BLBpCcb8mx|3c*1x!xZJ zKU!7(#h8s(^x)5*w=Z0K{=a9#qeoHU|0&%MiU0rr literal 0 HcmV?d00001 diff --git a/docs/dataartsstudio/api-ref/public_sys-resources/note_3.0-en-us.png b/docs/dataartsstudio/api-ref/public_sys-resources/note_3.0-en-us.png new file mode 100644 index 0000000000000000000000000000000000000000..57a0e1f53377b28fd80ceb393b035f8d9b8b392a GIT binary patch literal 1080 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 + +

Cluster Management

+

+
+ + diff --git a/docs/dataartsstudio/api-ref/topic_300000001_2.html b/docs/dataartsstudio/api-ref/topic_300000001_2.html new file mode 100644 index 000000000..955e9ec1d --- /dev/null +++ b/docs/dataartsstudio/api-ref/topic_300000001_2.html @@ -0,0 +1,32 @@ + + +

Job Management

+

+
+ + diff --git a/docs/dataartsstudio/api-ref/topic_300000002_2.html b/docs/dataartsstudio/api-ref/topic_300000002_2.html new file mode 100644 index 000000000..4a3679339 --- /dev/null +++ b/docs/dataartsstudio/api-ref/topic_300000002_2.html @@ -0,0 +1,22 @@ + + +

Link Management

+

+
+ +