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.
Files changed (28) hide show
  1. volc_flink_cli-1.0.0/PKG-INFO +379 -0
  2. volc_flink_cli-1.0.0/README.md +369 -0
  3. volc_flink_cli-1.0.0/pyproject.toml +24 -0
  4. volc_flink_cli-1.0.0/setup.cfg +4 -0
  5. volc_flink_cli-1.0.0/volc_flink_cli.egg-info/PKG-INFO +379 -0
  6. volc_flink_cli-1.0.0/volc_flink_cli.egg-info/SOURCES.txt +26 -0
  7. volc_flink_cli-1.0.0/volc_flink_cli.egg-info/dependency_links.txt +1 -0
  8. volc_flink_cli-1.0.0/volc_flink_cli.egg-info/entry_points.txt +2 -0
  9. volc_flink_cli-1.0.0/volc_flink_cli.egg-info/requires.txt +3 -0
  10. volc_flink_cli-1.0.0/volc_flink_cli.egg-info/top_level.txt +2 -0
  11. volc_flink_cli-1.0.0/volcano_flink.py +3792 -0
  12. volc_flink_cli-1.0.0/volcano_flink_client/__init__.py +33 -0
  13. volc_flink_cli-1.0.0/volcano_flink_client/api.py +177 -0
  14. volc_flink_cli-1.0.0/volcano_flink_client/auth/__init__.py +1 -0
  15. volc_flink_cli-1.0.0/volcano_flink_client/auth/auth.py +237 -0
  16. volc_flink_cli-1.0.0/volcano_flink_client/catalogs/__init__.py +3 -0
  17. volc_flink_cli-1.0.0/volcano_flink_client/catalogs/catalogs.py +118 -0
  18. volc_flink_cli-1.0.0/volcano_flink_client/drafts/__init__.py +1 -0
  19. volc_flink_cli-1.0.0/volcano_flink_client/drafts/drafts.py +778 -0
  20. volc_flink_cli-1.0.0/volcano_flink_client/jobs/__init__.py +1 -0
  21. volc_flink_cli-1.0.0/volcano_flink_client/jobs/jobs.py +683 -0
  22. volc_flink_cli-1.0.0/volcano_flink_client/projects/__init__.py +1 -0
  23. volc_flink_cli-1.0.0/volcano_flink_client/projects/projects.py +161 -0
  24. volc_flink_cli-1.0.0/volcano_flink_client/resource_pools/__init__.py +1 -0
  25. volc_flink_cli-1.0.0/volcano_flink_client/resource_pools/resource_pools.py +280 -0
  26. volc_flink_cli-1.0.0/volcano_flink_client/sessions/__init__.py +3 -0
  27. volc_flink_cli-1.0.0/volcano_flink_client/sessions/sessions.py +169 -0
  28. 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
+ - 确认账号具备对应权限