volc-flink-cli 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- volc_flink_cli-1.0.0/PKG-INFO +379 -0
- volc_flink_cli-1.0.0/README.md +369 -0
- volc_flink_cli-1.0.0/pyproject.toml +24 -0
- volc_flink_cli-1.0.0/setup.cfg +4 -0
- volc_flink_cli-1.0.0/volc_flink_cli.egg-info/PKG-INFO +379 -0
- volc_flink_cli-1.0.0/volc_flink_cli.egg-info/SOURCES.txt +26 -0
- volc_flink_cli-1.0.0/volc_flink_cli.egg-info/dependency_links.txt +1 -0
- volc_flink_cli-1.0.0/volc_flink_cli.egg-info/entry_points.txt +2 -0
- volc_flink_cli-1.0.0/volc_flink_cli.egg-info/requires.txt +3 -0
- volc_flink_cli-1.0.0/volc_flink_cli.egg-info/top_level.txt +2 -0
- volc_flink_cli-1.0.0/volcano_flink.py +3792 -0
- volc_flink_cli-1.0.0/volcano_flink_client/__init__.py +33 -0
- volc_flink_cli-1.0.0/volcano_flink_client/api.py +177 -0
- volc_flink_cli-1.0.0/volcano_flink_client/auth/__init__.py +1 -0
- volc_flink_cli-1.0.0/volcano_flink_client/auth/auth.py +237 -0
- volc_flink_cli-1.0.0/volcano_flink_client/catalogs/__init__.py +3 -0
- volc_flink_cli-1.0.0/volcano_flink_client/catalogs/catalogs.py +118 -0
- volc_flink_cli-1.0.0/volcano_flink_client/drafts/__init__.py +1 -0
- volc_flink_cli-1.0.0/volcano_flink_client/drafts/drafts.py +778 -0
- volc_flink_cli-1.0.0/volcano_flink_client/jobs/__init__.py +1 -0
- volc_flink_cli-1.0.0/volcano_flink_client/jobs/jobs.py +683 -0
- volc_flink_cli-1.0.0/volcano_flink_client/projects/__init__.py +1 -0
- volc_flink_cli-1.0.0/volcano_flink_client/projects/projects.py +161 -0
- volc_flink_cli-1.0.0/volcano_flink_client/resource_pools/__init__.py +1 -0
- volc_flink_cli-1.0.0/volcano_flink_client/resource_pools/resource_pools.py +280 -0
- volc_flink_cli-1.0.0/volcano_flink_client/sessions/__init__.py +3 -0
- volc_flink_cli-1.0.0/volcano_flink_client/sessions/sessions.py +169 -0
- volc_flink_cli-1.0.0/volcano_flink_client/vcm_flink_metrics_catalog.json +850 -0
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: volc-flink-cli
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Volcano Engine Flink Stream Computing Python Client CLI
|
|
5
|
+
Requires-Python: >=3.7
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: requests>=2.0.0
|
|
8
|
+
Requires-Dist: volcengine-python-sdk>=5.0.0
|
|
9
|
+
Requires-Dist: tos>=2.9.0
|
|
10
|
+
|
|
11
|
+
# 火山引擎流式计算 Flink 版 CLI / Python SDK
|
|
12
|
+
|
|
13
|
+
面向火山引擎流式计算 Flink 版的命令行工具与 Python SDK(非官方),覆盖登录认证、项目/资源池、草稿(SQL/JAR)、任务运维、日志与事件、Catalog 元数据、Session 集群等常用能力。
|
|
14
|
+
|
|
15
|
+
## 目录
|
|
16
|
+
|
|
17
|
+
- [安装](#安装)
|
|
18
|
+
- [快速开始](#快速开始)
|
|
19
|
+
- [常用场景](#常用场景)
|
|
20
|
+
- [草稿(Drafts)](#草稿drafts)
|
|
21
|
+
- [任务(Jobs)](#任务jobs)
|
|
22
|
+
- [监控(Monitor)](#监控monitor)
|
|
23
|
+
- [Catalog(元数据)](#catalog元数据)
|
|
24
|
+
- [Sessions(Session 集群)](#sessionssession-集群)
|
|
25
|
+
- [配置与安全](#配置与安全)
|
|
26
|
+
- [Python API](#python-api)
|
|
27
|
+
- [开发说明](#开发说明)
|
|
28
|
+
- [常见问题](#常见问题)
|
|
29
|
+
|
|
30
|
+
## 安装
|
|
31
|
+
|
|
32
|
+
### 环境要求
|
|
33
|
+
|
|
34
|
+
- Python 3.7+
|
|
35
|
+
|
|
36
|
+
### 安装方式
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pip install .
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
开发模式(可编辑安装):
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install -e .
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
安装完成后获得命令:`volc_flink`。
|
|
49
|
+
|
|
50
|
+
## 快速开始
|
|
51
|
+
|
|
52
|
+
### 1)登录
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
volc_flink login --region cn-beijing
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 2)选定项目(推荐)
|
|
59
|
+
|
|
60
|
+
先列举项目:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
volc_flink projects list
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
设置默认项目(之后大部分命令可省略 `-p/--project` 或 `--project-id`):
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
volc_flink config set-default-project --project-id YOUR_PROJECT_ID
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
也可以按项目名设置:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
volc_flink config set-default-project --name YOUR_PROJECT_NAME
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 3)查看帮助
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
volc_flink --help
|
|
82
|
+
volc_flink drafts --help
|
|
83
|
+
volc_flink jobs --help
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 常用场景
|
|
87
|
+
|
|
88
|
+
### 草稿(Drafts)
|
|
89
|
+
|
|
90
|
+
#### 1)列目录 / 列草稿
|
|
91
|
+
|
|
92
|
+
列草稿目录(用于创建草稿时选择目录):
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
volc_flink drafts dirs
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
列草稿(用于查询草稿 ID、类型、目录等):
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
volc_flink drafts apps --directory "/a/b/c"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
兼容命令(等价于 `drafts apps`):
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
volc_flink drafts list --directory "/a/b/c"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### 2)校验 SQL 草稿(Validate)
|
|
111
|
+
|
|
112
|
+
说明:Validate 不只做语法解析,也可能会触发 connector/catalog 的校验,因此失败不一定是 SQL 语法错误。
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# 通过草稿 ID 校验
|
|
116
|
+
volc_flink drafts validate --draft-id YOUR_DRAFT_ID
|
|
117
|
+
|
|
118
|
+
# 通过草稿名称或路径校验(自动解析草稿ID)
|
|
119
|
+
volc_flink drafts validate --draft "my_draft"
|
|
120
|
+
volc_flink drafts validate --draft "/a/b/c/my_draft.sql"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### 3)创建草稿(SQL)
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
volc_flink drafts create \
|
|
127
|
+
--name "test-streaming-sql" \
|
|
128
|
+
--directory "/a/b/c" \
|
|
129
|
+
--job-type FLINK_STREAMING_SQL \
|
|
130
|
+
--engine-version FLINK_VERSION_1_17 \
|
|
131
|
+
--sql "SELECT 1;"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
#### 4)创建草稿(JAR:本地上传到 TOS)
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
volc_flink drafts create \
|
|
138
|
+
--name "test-batch-jar" \
|
|
139
|
+
--directory "/a/b/c" \
|
|
140
|
+
--job-type FLINK_BATCH_JAR \
|
|
141
|
+
--engine-version FLINK_VERSION_1_20 \
|
|
142
|
+
--jar-path ./examples/jar/WordCount-flink-1-20.jar \
|
|
143
|
+
--main-class org.apache.flink.streaming.examples.wordcount.WordCount
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
#### 5)依赖与动态参数
|
|
147
|
+
|
|
148
|
+
Dependency 字段为 JSON 字符串,例如:
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
{"jars":["tos://flink-cwz-paimon/flink-client/resrouce/jars/WordCount-flink-1-20.jar"]}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
给草稿添加依赖(支持 tos 路径或本地路径,本地会自动上传并输出 `tos://...` 路径):
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
volc_flink drafts dependency add \
|
|
158
|
+
--draft "/a/b/c/jar_job" \
|
|
159
|
+
--jar tos://YOUR_BUCKET/path/to/jars/dep1.jar \
|
|
160
|
+
--jar ./path/to/dep2.jar
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
动态参数(DynamicOptions)为 String-String KV JSON,例如:
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
{"parallelism.default":"4","taskmanager.numberOfTaskSlots":"4"}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
设置/删除动态参数:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
volc_flink drafts params set --draft "/a/b/c/jar_job" --kv parallelism.default=4
|
|
173
|
+
volc_flink drafts params unset --draft "/a/b/c/jar_job" --key parallelism.default
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
#### 6)更新与发布
|
|
177
|
+
|
|
178
|
+
更新 SQL:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
volc_flink drafts update --draft "/a/b/c/sql_job" --sql-file /path/to/job.sql
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
发布草稿:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
volc_flink drafts publish --draft "/a/b/c/sql_job" --resource-pool YOUR_RESOURCE_POOL_NAME
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 任务(Jobs)
|
|
191
|
+
|
|
192
|
+
列举任务与详情:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
volc_flink jobs list
|
|
196
|
+
volc_flink jobs detail --job-id YOUR_JOB_ID
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
查询任务运行记录/事件:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
volc_flink jobs instances --job-id YOUR_JOB_ID --limit 20
|
|
203
|
+
volc_flink jobs events --job-id YOUR_JOB_ID --limit 50
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
启动/停止/重启(支持 `--inspect` 轮询状态):
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
volc_flink jobs start --job-id YOUR_JOB_ID --inspect --timeout 300
|
|
210
|
+
volc_flink jobs stop --job-id YOUR_JOB_ID --inspect --timeout 300
|
|
211
|
+
volc_flink jobs restart --job-id YOUR_JOB_ID --inspect --timeout 300
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Rescale(调整规格并自动发布重启):
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
volc_flink jobs rescale --job-id YOUR_JOB_ID --parallelism 32 --tm-spec 4C16GB --tm-slots 4 --jm-spec 2C8GB --inspect --timeout 300
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### 监控(Monitor)
|
|
221
|
+
|
|
222
|
+
查询事件:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
volc_flink monitor events --job-id YOUR_JOB_ID --limit 50
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
查询日志(默认选择最新实例,支持时间范围、cursor、tail):
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
volc_flink monitor logs --job-id YOUR_JOB_ID --level ERROR --since "2025-01-01 12:00:00" --until "2025-01-01 13:00:00"
|
|
232
|
+
volc_flink monitor logs --job-id YOUR_JOB_ID --follow --interval 2
|
|
233
|
+
volc_flink monitor logs --job-id YOUR_JOB_ID --cursor YOUR_CURSOR
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
查询 FlinkUI:
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
volc_flink monitor flinkui url --job-id YOUR_JOB_ID
|
|
240
|
+
volc_flink monitor flinkui overview --job-id YOUR_JOB_ID
|
|
241
|
+
volc_flink monitor flinkui exceptions --job-id YOUR_JOB_ID
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Catalog(元数据)
|
|
245
|
+
|
|
246
|
+
列出 Catalog 列表:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
volc_flink catalog tree
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
展开某个 Catalog(以列表形式列出该 Catalog 下的 Database):
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
volc_flink catalog tree --catalog-id 45
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
展开某个 Database(列出 Table):
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
volc_flink catalog tree --catalog-id 45 --database test_db
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
查看详细信息:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
volc_flink catalog catalogs list
|
|
268
|
+
volc_flink catalog catalogs show --catalog-id 45
|
|
269
|
+
volc_flink catalog databases show --catalog-id 45 --database test_db
|
|
270
|
+
volc_flink catalog tables show --catalog-id 45 --database test_db --table prds_pk1
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Sessions(Session 集群)
|
|
274
|
+
|
|
275
|
+
列举 Session 集群:
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
volc_flink sessions list
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
创建 Session 集群:
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
volc_flink sessions create \
|
|
285
|
+
--name "abcdef" \
|
|
286
|
+
--resource-pool "cwz-test" \
|
|
287
|
+
--queue "o-00c004d6dape" \
|
|
288
|
+
--engine-version "FLINK_VERSION_1_20" \
|
|
289
|
+
--context "DEBUG" \
|
|
290
|
+
--tm-min 1 --tm-max 10 \
|
|
291
|
+
--tm-vcore 2 --tm-memory 8 \
|
|
292
|
+
--slots-per-tm 2 \
|
|
293
|
+
--jm-vcore 1 --jm-memory 4
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
启动/停止:
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
volc_flink sessions start --id YOUR_SESSION_ID
|
|
300
|
+
volc_flink sessions stop --id YOUR_SESSION_ID
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
获取 FlinkUI(工具会自动获取 token 并通过网关拼接 URL):
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
volc_flink sessions ui --id YOUR_SESSION_ID
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## 配置与安全
|
|
310
|
+
|
|
311
|
+
### 配置文件位置
|
|
312
|
+
|
|
313
|
+
- Windows:`C:\Users\YourUsername\.volcano_flink\credentials.json`
|
|
314
|
+
- Linux/macOS:`~/.volcano_flink/credentials.json`
|
|
315
|
+
|
|
316
|
+
### 安全说明
|
|
317
|
+
|
|
318
|
+
- 密钥信息存储在用户本地目录,文件权限设置为仅当前用户可读写(0600)
|
|
319
|
+
- 建议定期更换访问密钥
|
|
320
|
+
- 生产环境建议使用更安全的密钥管理方案
|
|
321
|
+
|
|
322
|
+
## Python API
|
|
323
|
+
|
|
324
|
+
```python
|
|
325
|
+
from volcano_flink_client.auth.auth import AuthManager
|
|
326
|
+
from volcano_flink_client.api import ApiClient
|
|
327
|
+
from volcano_flink_client.projects.projects import ProjectManager
|
|
328
|
+
|
|
329
|
+
auth_manager = AuthManager()
|
|
330
|
+
credentials = auth_manager.login(access_key="YOUR_AK", secret_key="YOUR_SK", region="cn-beijing")
|
|
331
|
+
api_client = ApiClient(credentials)
|
|
332
|
+
|
|
333
|
+
project_manager = ProjectManager(api_client)
|
|
334
|
+
projects = project_manager.list_projects()
|
|
335
|
+
for p in projects:
|
|
336
|
+
print(p.name, p.id)
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## 开发说明
|
|
340
|
+
|
|
341
|
+
### 代码结构
|
|
342
|
+
|
|
343
|
+
```
|
|
344
|
+
volcano_flink_client/
|
|
345
|
+
├── api.py # HTTP 请求与签名
|
|
346
|
+
├── auth/ # 认证管理
|
|
347
|
+
├── projects/ # 项目操作
|
|
348
|
+
├── resource_pools/ # 资源池操作
|
|
349
|
+
├── drafts/ # 草稿操作
|
|
350
|
+
├── jobs/ # 任务操作
|
|
351
|
+
├── catalogs/ # Catalog 元数据
|
|
352
|
+
└── sessions/ # Session 集群
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### 本地验证
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
python integration_test.py
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
## 常见问题
|
|
362
|
+
|
|
363
|
+
### Q:如何获取 AK/SK?
|
|
364
|
+
|
|
365
|
+
进入火山引擎控制台的访问控制页面创建与管理访问密钥:<https://console.volcengine.com/iam/accesskey/>
|
|
366
|
+
|
|
367
|
+
### Q:命令忘了怎么用?
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
volc_flink --help
|
|
371
|
+
volc_flink <module> --help
|
|
372
|
+
volc_flink <module> <cmd> --help
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Q:登录失败怎么办?
|
|
376
|
+
|
|
377
|
+
- 确认 AK/SK 正确
|
|
378
|
+
- 确认网络可访问火山引擎 OpenAPI
|
|
379
|
+
- 确认账号具备对应权限
|