@clickzetta/cz-cli-darwin-arm64 0.3.39 → 0.3.40
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.
- package/bin/cz-cli +0 -0
- package/bin/skills/clickzetta-data-ingest-pipeline/SKILL.md +237 -0
- package/bin/skills/clickzetta-kafka-ingest-pipeline/SKILL.md +7 -20
- package/bin/skills/clickzetta-metadata/SKILL.md +23 -2
- package/bin/skills/clickzetta-monitoring/SKILL.md +18 -2
- package/bin/skills/clickzetta-monitoring/references/show-jobs.md +2 -2
- package/bin/skills/clickzetta-oss-ingest-pipeline/SKILL.md +24 -38
- package/bin/skills/cz-cli-inner/SKILL.md +5 -4
- package/package.json +1 -1
- package/bin/skills/clickzetta-cdc-sync-pipeline/SKILL.md +0 -548
- package/bin/skills/clickzetta-cdc-sync-pipeline/eval_cases.jsonl +0 -5
- package/bin/skills/clickzetta-realtime-sync-pipeline/SKILL.md +0 -276
- package/bin/skills/clickzetta-realtime-sync-pipeline/eval_cases.jsonl +0 -5
package/bin/cz-cli
CHANGED
|
Binary file
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clickzetta-data-ingest-pipeline
|
|
3
|
+
description: |
|
|
4
|
+
ClickZetta Lakehouse 数据导入总览与路由。根据用户的数据源类型、实时性要求、数据量等条件,
|
|
5
|
+
推荐最合适的数据导入方式,并引导到对应的专项 Skill 或直接执行简单导入操作。
|
|
6
|
+
当用户说"导入数据到 Lakehouse"、"数据入仓"、"数据入湖"、"怎么把数据导进来"、
|
|
7
|
+
"数据采集"、"数据加载"、"ingest data"、"load data"、"数据导入方案选择"时触发。
|
|
8
|
+
Keywords: data ingestion, import, routing, pipeline selection, data source
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Lakehouse 数据导入总览与路由
|
|
12
|
+
|
|
13
|
+
根据用户的数据源、实时性需求、数据规模等条件,推荐最合适的数据导入方式,
|
|
14
|
+
并路由到对应的专项 Pipeline Skill 或直接执行简单导入操作。
|
|
15
|
+
|
|
16
|
+
## 适用场景
|
|
17
|
+
|
|
18
|
+
- 用户想把数据导入 ClickZetta Lakehouse,但不确定用哪种方式
|
|
19
|
+
- 用户描述了数据源(Kafka、MySQL、OSS、文件等),需要推荐导入方案
|
|
20
|
+
- 用户需要了解各种导入方式的适用场景和差异
|
|
21
|
+
- 关键词:数据导入、数据入仓、数据入湖、数据采集、数据加载、pipeline 选择
|
|
22
|
+
|
|
23
|
+
## 前置依赖
|
|
24
|
+
|
|
25
|
+
- ClickZetta Lakehouse 账户,具备创建工作空间、Schema、表、PIPE、任务等权限
|
|
26
|
+
- **执行环境**:已安装并配置 cz-cli
|
|
27
|
+
|
|
28
|
+
## 执行环境
|
|
29
|
+
|
|
30
|
+
所有操作通过 `cz-cli` 执行:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cz-cli --version
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
需要 cz-cli,请参考官方文档安装并完成配置后重试。
|
|
37
|
+
|
|
38
|
+
## 数据导入方式决策树
|
|
39
|
+
|
|
40
|
+
### 步骤 1:确认数据源类型和需求
|
|
41
|
+
|
|
42
|
+
向用户收集以下信息:
|
|
43
|
+
|
|
44
|
+
1. **数据源类型**:Kafka / 对象存储(OSS/S3/COS) / 关系型数据库(MySQL/PostgreSQL/SQL Server) / 本地文件 / URL/Web 文件 / Java SDK / ZettaPark
|
|
45
|
+
2. **实时性要求**:实时(秒级延迟)/ 准实时(分钟级)/ 离线批量(小时/天级)
|
|
46
|
+
3. **同步范围**:单表 / 多表 / 整库
|
|
47
|
+
4. **是否需要持续同步**:一次性导入 / 持续增量同步
|
|
48
|
+
5. **是否需要 CDC(变更数据捕获)**:是 / 否
|
|
49
|
+
|
|
50
|
+
### 步骤 2:根据决策矩阵推荐方案
|
|
51
|
+
|
|
52
|
+
| 数据源 | 实时性 | 同步范围 | 推荐方式 | 对应 Skill |
|
|
53
|
+
|--------|--------|---------|---------|-----------|
|
|
54
|
+
| Kafka | 实时/准实时 | 单 topic | Kafka PIPE 持续导入(SQL) | `clickzetta-kafka-ingest-pipeline` |
|
|
55
|
+
| Kafka | 实时 | 多 topic | Studio 实时同步 | `clickzetta-realtime-sync-pipeline` |
|
|
56
|
+
| 对象存储 (OSS/S3/COS) | 准实时/批量 | 文件持续到达 | PIPE 持续导入 | `clickzetta-oss-ingest-pipeline` |
|
|
57
|
+
| 对象存储 | 一次性 | 批量文件 | COPY INTO 命令 | `clickzetta-file-import-pipeline`(COPY INTO 部分) |
|
|
58
|
+
| MySQL/PostgreSQL/SQL Server | 实时 CDC | 单表 | Studio 实时同步 | `clickzetta-realtime-sync-pipeline` |
|
|
59
|
+
| MySQL/PostgreSQL/SQL Server | 实时 CDC | 多表/整库 | Studio 多表实时同步 | `clickzetta-cdc-sync-pipeline` |
|
|
60
|
+
| MySQL/PostgreSQL/SQL Server | 离线批量 | 单表 | Studio 离线同步 | `clickzetta-batch-sync-pipeline` |
|
|
61
|
+
| MySQL/PostgreSQL/SQL Server | 离线批量 | 多表 | Studio 多表离线同步 | `clickzetta-batch-sync-pipeline` |
|
|
62
|
+
| 本地文件 / URL | 一次性 | 单文件/多文件 | URL 下载 + COPY INTO | `clickzetta-file-import-pipeline` |
|
|
63
|
+
| 流式增量计算 | 准实时 | 表变更驱动 | Dynamic Table + Stream | `clickzetta-incremental-compute-pipeline` |
|
|
64
|
+
| Java 应用 | 实时/批量 | 程序写入 | Java SDK | (见下方 SDK 导入指引) |
|
|
65
|
+
| Python/ZettaPark | 批量 | DataFrame | ZettaPark save_as_table | (见下方 SDK 导入指引) |
|
|
66
|
+
|
|
67
|
+
### 步骤 3:路由到专项 Skill 或直接执行
|
|
68
|
+
|
|
69
|
+
根据推荐方案,执行以下路由逻辑:
|
|
70
|
+
|
|
71
|
+
**有对应专项 Skill 的场景** → 告知用户推荐方案,引导使用对应 Skill:
|
|
72
|
+
- `clickzetta-kafka-ingest-pipeline`:Kafka PIPE 管道搭建
|
|
73
|
+
- `clickzetta-oss-ingest-pipeline`:对象存储 PIPE 管道搭建
|
|
74
|
+
- `clickzetta-batch-sync-pipeline`:Studio 离线同步任务
|
|
75
|
+
- `clickzetta-realtime-sync-pipeline`:Studio 实时同步任务
|
|
76
|
+
- `clickzetta-cdc-sync-pipeline`:Studio 多表实时同步(CDC)
|
|
77
|
+
- `clickzetta-incremental-compute-pipeline`:Dynamic Table + Stream 增量计算管道
|
|
78
|
+
- `clickzetta-file-import-pipeline`:URL/文件下载导入
|
|
79
|
+
- `clickzetta-table-stream-pipeline`:Table Stream 变更数据捕获
|
|
80
|
+
|
|
81
|
+
**无专项 Skill 的简单场景** → 直接执行:
|
|
82
|
+
|
|
83
|
+
#### SQL INSERT 导入(小数据量)
|
|
84
|
+
```sql
|
|
85
|
+
INSERT INTO schema_name.table_name (col1, col2, col3)
|
|
86
|
+
VALUES ('val1', 'val2', 'val3');
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
#### COPY INTO 快速导入(从 Volume)
|
|
90
|
+
```sql
|
|
91
|
+
-- 1. 确认 Volume 中有文件
|
|
92
|
+
SHOW VOLUME DIRECTORY volume_name;
|
|
93
|
+
|
|
94
|
+
-- 2. 执行 COPY INTO
|
|
95
|
+
COPY INTO schema_name.table_name
|
|
96
|
+
FROM VOLUME volume_name
|
|
97
|
+
USING CSV
|
|
98
|
+
OPTIONS('header' = 'true');
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Java SDK 导入指引
|
|
102
|
+
提供 Java SDK 的关键配置信息:
|
|
103
|
+
- Maven 依赖坐标
|
|
104
|
+
- 连接配置(endpoint、workspace、schema、vcluster)
|
|
105
|
+
- 批量写入 API:`BulkloadWriter`
|
|
106
|
+
- 实时写入 API:`RealtimeWriter`
|
|
107
|
+
- 建议用户参考官方文档:`comprehensive_guide_to_ingesting_javasdk_buckload_realtime`
|
|
108
|
+
|
|
109
|
+
#### ZettaPark (Python) 导入指引
|
|
110
|
+
- `INSERT` 方式:`session.sql("INSERT INTO ...")`
|
|
111
|
+
- `save_as_table` 方式:`df.write.save_as_table("table_name")`
|
|
112
|
+
- 建议用户参考官方文档:`comprehensive_guide_to_ingesting_zettapark_save_as_table`
|
|
113
|
+
|
|
114
|
+
## 异构数据源类型映射(ODS 层建表必读)
|
|
115
|
+
|
|
116
|
+
从关系型数据库(MySQL/PostgreSQL 等)同步数据时,ODS 层建表的字段类型选择直接影响同步成功率。
|
|
117
|
+
|
|
118
|
+
**核心原则:ODS 层使用宽泛类型,DWD 层再做精确转换。**
|
|
119
|
+
|
|
120
|
+
### MySQL → Lakehouse 类型映射
|
|
121
|
+
|
|
122
|
+
| MySQL 类型 | ❌ ODS 层不要用 | ✅ ODS 层用 | DWD 层转换 |
|
|
123
|
+
|---|---|---|---|
|
|
124
|
+
| `BIT(1)` | `BOOLEAN` | `TINYINT` | `CAST(col AS BOOLEAN)` |
|
|
125
|
+
| `TINYINT(1)` | `BOOLEAN` | `TINYINT` | `CAST(col AS BOOLEAN)` |
|
|
126
|
+
| `DATETIME` | `DATETIME` | `TIMESTAMP` | 直接用 |
|
|
127
|
+
| `ENUM('a','b')` | `ENUM` | `STRING` | 直接用 |
|
|
128
|
+
| `TEXT` / `LONGTEXT` / `MEDIUMTEXT` | `TEXT` | `STRING` | 直接用 |
|
|
129
|
+
| `DECIMAL(p,s)` | `FLOAT` / `DOUBLE` | `DECIMAL(p,s)` | 直接用 |
|
|
130
|
+
| `JSON` | `JSON` | `STRING` | `parse_json(col)['field']` |
|
|
131
|
+
| `SET('a','b')` | `SET` | `STRING` | 直接用 |
|
|
132
|
+
|
|
133
|
+
> ⚠️ **最常见踩坑**:`BIT(1)` 映射为 `BOOLEAN` 会导致同步任务失败。ODS 层改为 `TINYINT`,同步成功后在 DWD 层用 `CAST(col AS BOOLEAN)` 转换。
|
|
134
|
+
|
|
135
|
+
### PostgreSQL → Lakehouse 类型映射
|
|
136
|
+
|
|
137
|
+
| PostgreSQL 类型 | ❌ ODS 层不要用 | ✅ ODS 层用 |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| `BOOLEAN` | `BOOLEAN` | `TINYINT` |
|
|
140
|
+
| `SERIAL` / `BIGSERIAL` | `SERIAL` | `BIGINT` |
|
|
141
|
+
| `JSONB` / `JSON` | `JSON` | `STRING` |
|
|
142
|
+
| `ARRAY` | `ARRAY` | `STRING`(JSON 序列化) |
|
|
143
|
+
| `UUID` | `UUID` | `STRING` |
|
|
144
|
+
| `NUMERIC(p,s)` | `FLOAT` | `DECIMAL(p,s)` |
|
|
145
|
+
|
|
146
|
+
## 数据入仓 vs 数据入湖| 维度 | 数据入仓 | 数据入湖 |
|
|
147
|
+
|------|---------|---------|
|
|
148
|
+
| 目标 | Lakehouse 托管表 | 用户 Volume(对象存储) |
|
|
149
|
+
| 格式 | 自动转为内部列式格式 | 保持原始文件格式 |
|
|
150
|
+
| 查询性能 | 高(列式存储 + 索引) | 较低(需扫描原始文件) |
|
|
151
|
+
| 适用场景 | 分析查询、BI 报表、数据仓库 | 数据暂存、原始数据归档、跨系统共享 |
|
|
152
|
+
| 常用方式 | Studio 同步、PIPE、COPY INTO、SDK | PUT 文件、Python 脚本上传 |
|
|
153
|
+
|
|
154
|
+
## 示例
|
|
155
|
+
|
|
156
|
+
### 示例 1:用户不确定导入方式
|
|
157
|
+
|
|
158
|
+
用户说:"我有一个 MySQL 数据库,想把里面的订单表实时同步到 Lakehouse"
|
|
159
|
+
|
|
160
|
+
路由逻辑:
|
|
161
|
+
1. 数据源:MySQL(关系型数据库)
|
|
162
|
+
2. 实时性:实时
|
|
163
|
+
3. 同步范围:单表
|
|
164
|
+
4. 需要 CDC:是(实时同步意味着需要捕获变更)
|
|
165
|
+
→ 推荐:Studio 实时同步
|
|
166
|
+
→ 路由到 `clickzetta-realtime-sync-pipeline` Skill
|
|
167
|
+
|
|
168
|
+
### 示例 2:多种数据源混合场景
|
|
169
|
+
|
|
170
|
+
用户说:"我们有 Kafka 的用户行为日志,还有 MySQL 的业务数据,都要导入 Lakehouse"
|
|
171
|
+
|
|
172
|
+
路由逻辑:
|
|
173
|
+
1. Kafka 用户行为日志 → `clickzetta-kafka-ingest-pipeline`(PIPE 持续导入)
|
|
174
|
+
2. MySQL 业务数据 → 确认实时性需求:
|
|
175
|
+
- 实时 → `clickzetta-realtime-sync-pipeline` 或 `clickzetta-cdc-sync-pipeline`
|
|
176
|
+
- 离线 → `clickzetta-batch-sync-pipeline`
|
|
177
|
+
→ 分别引导到对应 Skill
|
|
178
|
+
|
|
179
|
+
### 示例 3:简单的一次性文件导入
|
|
180
|
+
|
|
181
|
+
用户说:"我有一个 CSV 文件要导入"
|
|
182
|
+
|
|
183
|
+
路由逻辑:
|
|
184
|
+
1. 数据源:本地文件
|
|
185
|
+
2. 一次性导入
|
|
186
|
+
→ 路由到 `clickzetta-file-import-pipeline` Skill(支持文件上传 + COPY INTO)
|
|
187
|
+
|
|
188
|
+
## 错误处理
|
|
189
|
+
|
|
190
|
+
| 场景 | 处理方式 |
|
|
191
|
+
|------|---------|
|
|
192
|
+
| 用户无法确定数据源类型 | 询问数据当前存储位置(哪个系统/服务),帮助判断 |
|
|
193
|
+
| 用户需求跨多种导入方式 | 拆分为多个独立的导入任务,分别路由到对应 Skill |
|
|
194
|
+
| 推荐的 Skill 尚未创建 | 提供该导入方式的基本步骤和关键 SQL/API,引导用户参考官方文档 |
|
|
195
|
+
| 用户的云环境不支持某种连接 | 执行 `cz-cli sql "SHOW CONNECTIONS" --sync` 检查可用连接类型,推荐替代方案 |
|
|
196
|
+
| 数据量极大(TB 级) | 建议分批导入,优先使用 PIPE 或 Studio 同步任务(支持断点续传) |
|
|
197
|
+
|
|
198
|
+
## 注意事项
|
|
199
|
+
|
|
200
|
+
- 本 Skill 是路由入口,不直接执行复杂的 pipeline 搭建,而是引导到专项 Skill
|
|
201
|
+
- 对于简单场景(SQL INSERT、单次 COPY INTO),可以直接在本 Skill 中完成
|
|
202
|
+
- 推荐方案时需考虑用户的云环境(阿里云/腾讯云/AWS),不同环境支持的连接类型可能不同
|
|
203
|
+
- 执行 `cz-cli sql "SHOW VCLUSTERS" --sync` 确认可用的虚拟集群,同步任务需要 SYNC 类型的 VCluster
|
|
204
|
+
- 数据入仓是最常见的场景,数据入湖主要用于原始数据暂存或跨系统共享
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## cz-cli 替代路径
|
|
209
|
+
|
|
210
|
+
> 仅在 cz-cli 可用且 MCP 不可用时使用本节。
|
|
211
|
+
> 本 Skill 是路由入口,cz-cli 路径的核心逻辑在各专项 Skill 的"cz-cli 替代路径"章节中。
|
|
212
|
+
|
|
213
|
+
### 路由说明
|
|
214
|
+
|
|
215
|
+
当 MCP 不可用时,各专项 Skill 均已提供 cz-cli 替代路径:
|
|
216
|
+
|
|
217
|
+
| 数据源 | 推荐方式 | 对应 Skill 的 cz-cli 路径 |
|
|
218
|
+
|--------|---------|--------------------------|
|
|
219
|
+
| Kafka | PIPE 持续导入 | `clickzetta-kafka-ingest-pipeline` → cz-cli 替代路径 |
|
|
220
|
+
| 对象存储 (OSS/S3/COS) | PIPE 持续导入 | `clickzetta-oss-ingest-pipeline` → cz-cli 替代路径 |
|
|
221
|
+
| MySQL/PostgreSQL/SQL Server(实时单表) | Studio 实时同步 | `clickzetta-realtime-sync-pipeline` → cz-cli 替代路径 |
|
|
222
|
+
| MySQL/PostgreSQL/SQL Server(实时多表/整库) | Studio 多表实时同步 | `clickzetta-cdc-sync-pipeline` → cz-cli 替代路径 |
|
|
223
|
+
| MySQL/PostgreSQL/SQL Server(离线批量) | Studio 离线同步 | `clickzetta-batch-sync-pipeline` → cz-cli 替代路径 |
|
|
224
|
+
|
|
225
|
+
### 简单场景直接执行(cz-cli 版)
|
|
226
|
+
|
|
227
|
+
对于无需专项 Skill 的简单场景,可直接用 cz-cli agent 完成:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
# SQL INSERT 导入(小数据量)
|
|
231
|
+
cz-cli agent run "向表 <schema_name>.<table_name> 插入数据:<col1>=<val1>, <col2>=<val2>" \
|
|
232
|
+
--format a2a --dangerously-skip-permissions
|
|
233
|
+
|
|
234
|
+
# COPY INTO 快速导入(从 Volume)
|
|
235
|
+
cz-cli agent run "从 Volume <volume_name> 以 CSV 格式(有 header)将数据导入表 <schema_name>.<table_name>" \
|
|
236
|
+
--format a2a --dangerously-skip-permissions
|
|
237
|
+
```
|
|
@@ -39,29 +39,18 @@ description: |
|
|
|
39
39
|
- Kafka 集群网络可达(确认 bootstrap 地址和端口)
|
|
40
40
|
- 已知 Kafka Topic 名称和消息格式
|
|
41
41
|
- 认证信息(如需要):SASL 用户名/密码
|
|
42
|
-
-
|
|
43
|
-
- **cz-cli 路径**:已安装 cz-cli(`pip install cz-cli`),并完成 `cz-cli configure` 配置
|
|
44
|
-
- **MCP 路径**:clickzetta-mcp-server 工具可用(`LH_execute_query`、`LH_show_object_list` 等)
|
|
42
|
+
- **执行环境**:已安装并配置 cz-cli
|
|
45
43
|
|
|
46
|
-
##
|
|
44
|
+
## 执行环境
|
|
47
45
|
|
|
48
|
-
|
|
46
|
+
所有 SQL 通过 `cz-cli sql` 执行:
|
|
49
47
|
|
|
50
|
-
**第一步:检测 cz-cli 是否可用**
|
|
51
48
|
```bash
|
|
52
|
-
cz-cli --version
|
|
49
|
+
cz-cli --version # 确认 cz-cli 可用
|
|
50
|
+
cz-cli sql "SELECT 1" --sync # 验证连接
|
|
53
51
|
```
|
|
54
|
-
- 若命令存在 → **走 cz-cli 路径**(见本文档末尾"cz-cli 替代路径"章节)
|
|
55
|
-
- 若命令不存在 → 继续检测 MCP
|
|
56
52
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
尝试调用 `LH_execute_query` 工具执行一条简单 SQL(如 `SELECT 1`)。
|
|
60
|
-
- 若工具存在于 tool list → **走 MCP 路径**(本文档默认路径)
|
|
61
|
-
- 若工具不存在 → 停止执行,提示用户:
|
|
62
|
-
> "当前环境既无 cz-cli 也无 MCP 工具,请安装其中之一后重试。
|
|
63
|
-
> cz-cli 安装:`pip install cz-cli`,然后运行 `cz-cli configure`
|
|
64
|
-
> MCP 安装:参考 clickzetta-mcp-server 配置文档"
|
|
53
|
+
需要 cz-cli,请参考官方文档安装并完成配置后重试。
|
|
65
54
|
|
|
66
55
|
## ⚠️ 关键注意事项
|
|
67
56
|
|
|
@@ -663,10 +652,8 @@ COPY INTO ods.secure_events FROM (
|
|
|
663
652
|
|
|
664
653
|
---
|
|
665
654
|
|
|
666
|
-
## cz-cli
|
|
655
|
+
## cz-cli 执行路径
|
|
667
656
|
|
|
668
|
-
> 仅在 cz-cli 可用且 MCP 不可用时使用本节。步骤编号与上方 MCP 路径对应。
|
|
669
|
-
> 所有操作通过 `cz-cli agent run` 委托给内置 agent 完成,agent 内置完整的 MCP 工具访问能力。
|
|
670
657
|
|
|
671
658
|
### 路径一:READ_KAFKA Pipe(cz-cli 版)
|
|
672
659
|
|
|
@@ -35,6 +35,27 @@ description: |
|
|
|
35
35
|
|
|
36
36
|
# ClickZetta 元数据查询指南
|
|
37
37
|
|
|
38
|
+
## 执行方式
|
|
39
|
+
|
|
40
|
+
所有 SQL 通过 `cz-cli sql` 执行,无需 MCP 工具。
|
|
41
|
+
|
|
42
|
+
**执行示例:**
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# 执行 SHOW/DESC 查询
|
|
46
|
+
cz-cli sql "SHOW TABLES" --sync -o table
|
|
47
|
+
|
|
48
|
+
# 执行 information_schema 查询
|
|
49
|
+
cz-cli sql "SELECT * FROM information_schema.tables LIMIT 10" --sync -o table
|
|
50
|
+
|
|
51
|
+
# 执行 load_history 查询
|
|
52
|
+
cz-cli sql "SELECT * FROM load_history('my_schema.my_table') LIMIT 20" --sync -o table
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
注意:`--sync` 等待结果返回;`-o table` 输出为表格格式便于阅读。
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
38
59
|
## 选择查询方式
|
|
39
60
|
|
|
40
61
|
| 场景 | 推荐方式 | 原因 |
|
|
@@ -138,7 +159,7 @@ SHOW VCLUSTERS WHERE state = 'RUNNING';
|
|
|
138
159
|
|
|
139
160
|
-- 作业(最近 7 天,最多 10000 条,不支持 ORDER BY)
|
|
140
161
|
SHOW JOBS LIMIT 20;
|
|
141
|
-
SHOW JOBS IN VCLUSTER
|
|
162
|
+
SHOW JOBS IN VCLUSTER default LIMIT 20;
|
|
142
163
|
|
|
143
164
|
-- 动态表刷新历史(最近 7 天)
|
|
144
165
|
SHOW DYNAMIC TABLE REFRESH HISTORY LIMIT 20;
|
|
@@ -169,7 +190,7 @@ SHOW SHARES;
|
|
|
169
190
|
DESC my_table;
|
|
170
191
|
DESC EXTENDED my_table; -- 含 last_modified_time/properties/statistics
|
|
171
192
|
DESC SCHEMA my_schema;
|
|
172
|
-
DESC VCLUSTER
|
|
193
|
+
DESC VCLUSTER default;
|
|
173
194
|
DESC VOLUME my_volume;
|
|
174
195
|
DESC CONNECTION my_oss_conn;
|
|
175
196
|
DESC FUNCTION my_schema.my_function; -- 仅支持外部函数
|
|
@@ -13,6 +13,22 @@ description: |
|
|
|
13
13
|
Keywords: monitoring, job status, performance, resource usage, SHOW JOBS, slow query
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
+
## 执行方式
|
|
17
|
+
|
|
18
|
+
所有 SQL 通过 `cz-cli sql` 执行,无需 MCP 工具:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# 执行查询
|
|
22
|
+
cz-cli sql "SHOW JOBS LIMIT 20" --sync -o table
|
|
23
|
+
|
|
24
|
+
# 执行 information_schema 查询
|
|
25
|
+
cz-cli sql "SELECT * FROM information_schema.job_history WHERE pt_date >= CAST(CURRENT_DATE - INTERVAL 1 DAY AS DATE) LIMIT 10" --sync -o table
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
注意:`--sync` 等待结果返回;`-o table` 输出为表格格式便于阅读。
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
16
32
|
# ClickZetta 作业监控与分析
|
|
17
33
|
|
|
18
34
|
阅读 [references/show-jobs.md](references/show-jobs.md) 了解 SHOW JOBS 语法。
|
|
@@ -27,7 +43,7 @@ description: |
|
|
|
27
43
|
SHOW JOBS;
|
|
28
44
|
|
|
29
45
|
-- 查看指定集群的作业
|
|
30
|
-
SHOW JOBS IN VCLUSTER
|
|
46
|
+
SHOW JOBS IN VCLUSTER default;
|
|
31
47
|
|
|
32
48
|
-- 查看执行时间超过2分钟的慢查询
|
|
33
49
|
SHOW JOBS WHERE execution_time > INTERVAL 2 MINUTE;
|
|
@@ -36,7 +52,7 @@ SHOW JOBS WHERE execution_time > INTERVAL 2 MINUTE;
|
|
|
36
52
|
SHOW JOBS WHERE status = 'FAILED';
|
|
37
53
|
|
|
38
54
|
-- 限制返回数量
|
|
39
|
-
SHOW JOBS IN VCLUSTER
|
|
55
|
+
SHOW JOBS IN VCLUSTER default LIMIT 50;
|
|
40
56
|
```
|
|
41
57
|
|
|
42
58
|
---
|
|
@@ -24,10 +24,10 @@ SHOW JOBS [IN VCLUSTER vc_name] [LIKE 'pattern'] [WHERE <expr>] [LIMIT num];
|
|
|
24
24
|
SHOW JOBS;
|
|
25
25
|
|
|
26
26
|
-- 查看指定集群的作业
|
|
27
|
-
SHOW JOBS IN VCLUSTER
|
|
27
|
+
SHOW JOBS IN VCLUSTER default;
|
|
28
28
|
|
|
29
29
|
-- 查看执行时间超过2分钟的作业
|
|
30
|
-
SHOW JOBS IN VCLUSTER
|
|
30
|
+
SHOW JOBS IN VCLUSTER default WHERE execution_time > INTERVAL 2 MINUTE;
|
|
31
31
|
|
|
32
32
|
-- 限制返回100条
|
|
33
33
|
SHOW JOBS LIMIT 100;
|
|
@@ -26,29 +26,18 @@ description: |
|
|
|
26
26
|
|
|
27
27
|
- ClickZetta Lakehouse 账户,具备创建 PIPE、表、存储连接、Volume 等权限
|
|
28
28
|
- 对象存储桶可达(Endpoint、AccessKey 或 Role ARN)
|
|
29
|
-
-
|
|
30
|
-
- **cz-cli 路径**:已安装 cz-cli(`pip install cz-cli`),并完成 `cz-cli configure` 配置
|
|
31
|
-
- **MCP 路径**:clickzetta-mcp-server 工具可用(`LH_execute_query`、`LH_show_object_list` 等)
|
|
29
|
+
- **执行环境**:已安装并配置 cz-cli
|
|
32
30
|
|
|
33
|
-
##
|
|
31
|
+
## 执行环境
|
|
34
32
|
|
|
35
|
-
|
|
33
|
+
所有 SQL 通过 `cz-cli sql` 执行:
|
|
36
34
|
|
|
37
|
-
**第一步:检测 cz-cli 是否可用**
|
|
38
35
|
```bash
|
|
39
|
-
cz-cli --version
|
|
36
|
+
cz-cli --version # 确认 cz-cli 可用
|
|
37
|
+
cz-cli sql "SELECT 1" --sync # 验证连接
|
|
40
38
|
```
|
|
41
|
-
- 若命令存在 → **走 cz-cli 路径**(见本文档末尾"cz-cli 替代路径"章节)
|
|
42
|
-
- 若命令不存在 → 继续检测 MCP
|
|
43
39
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
尝试调用 `LH_execute_query` 工具执行一条简单 SQL(如 `SELECT 1`)。
|
|
47
|
-
- 若工具存在于 tool list → **走 MCP 路径**(本文档默认路径)
|
|
48
|
-
- 若工具不存在 → 停止执行,提示用户:
|
|
49
|
-
> "当前环境既无 cz-cli 也无 MCP 工具,请安装其中之一后重试。
|
|
50
|
-
> cz-cli 安装:`pip install cz-cli`,然后运行 `cz-cli configure`
|
|
51
|
-
> MCP 安装:参考 clickzetta-mcp-server 配置文档"
|
|
40
|
+
需要 cz-cli,请参考官方文档安装并完成配置后重试。
|
|
52
41
|
|
|
53
42
|
## 核心概念
|
|
54
43
|
|
|
@@ -82,7 +71,7 @@ cz-cli --version
|
|
|
82
71
|
#### 步骤 1:创建存储连接(Storage Connection)
|
|
83
72
|
|
|
84
73
|
```sql
|
|
85
|
-
--
|
|
74
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
86
75
|
-- 密钥方式(LIST_PURGE 模式支持)
|
|
87
76
|
CREATE STORAGE CONNECTION IF NOT EXISTS my_oss_connection
|
|
88
77
|
TYPE OSS
|
|
@@ -102,7 +91,7 @@ CREATE STORAGE CONNECTION IF NOT EXISTS my_oss_connection
|
|
|
102
91
|
#### 步骤 2:创建外部 Volume
|
|
103
92
|
|
|
104
93
|
```sql
|
|
105
|
-
--
|
|
94
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
106
95
|
CREATE EXTERNAL VOLUME IF NOT EXISTS pipe_volume
|
|
107
96
|
LOCATION 'oss://my-bucket/data-path/'
|
|
108
97
|
USING CONNECTION my_oss_connection
|
|
@@ -121,7 +110,7 @@ CREATE EXTERNAL VOLUME IF NOT EXISTS pipe_volume
|
|
|
121
110
|
在创建 PIPE 之前,先用 COPY INTO 验证数据能正常加载:
|
|
122
111
|
|
|
123
112
|
```sql
|
|
124
|
-
--
|
|
113
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
125
114
|
COPY INTO my_schema.target_table
|
|
126
115
|
FROM VOLUME pipe_volume
|
|
127
116
|
USING CSV OPTIONS ('header' = 'true', 'delimiter' = ',') PURGE=true;
|
|
@@ -134,7 +123,7 @@ USING CSV OPTIONS ('header' = 'true', 'delimiter' = ',') PURGE=true;
|
|
|
134
123
|
#### 步骤 4:创建 PIPE(LIST_PURGE 模式)
|
|
135
124
|
|
|
136
125
|
```sql
|
|
137
|
-
--
|
|
126
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
138
127
|
CREATE PIPE IF NOT EXISTS my_oss_pipe
|
|
139
128
|
INGEST_MODE = 'LIST_PURGE'
|
|
140
129
|
VIRTUAL_CLUSTER = 'my_vc'
|
|
@@ -168,7 +157,7 @@ USING CSV OPTIONS ('header' = 'true') PURGE=true;
|
|
|
168
157
|
#### 步骤 5:验证 PIPE 状态
|
|
169
158
|
|
|
170
159
|
```sql
|
|
171
|
-
--
|
|
160
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
172
161
|
DESC PIPE EXTENDED my_oss_pipe;
|
|
173
162
|
```
|
|
174
163
|
|
|
@@ -190,7 +179,7 @@ DESC PIPE EXTENDED my_oss_pipe;
|
|
|
190
179
|
#### 步骤 1:创建存储连接(Role ARN 方式)
|
|
191
180
|
|
|
192
181
|
```sql
|
|
193
|
-
--
|
|
182
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
194
183
|
CREATE STORAGE CONNECTION IF NOT EXISTS my_oss_role_connection
|
|
195
184
|
TYPE OSS
|
|
196
185
|
ENDPOINT = 'oss-cn-hangzhou.aliyuncs.com'
|
|
@@ -201,7 +190,7 @@ CREATE STORAGE CONNECTION IF NOT EXISTS my_oss_role_connection
|
|
|
201
190
|
#### 步骤 2:创建外部 Volume
|
|
202
191
|
|
|
203
192
|
```sql
|
|
204
|
-
--
|
|
193
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
205
194
|
CREATE EXTERNAL VOLUME IF NOT EXISTS pipe_event_volume
|
|
206
195
|
LOCATION 'oss://my-bucket/data-path/'
|
|
207
196
|
USING CONNECTION my_oss_role_connection
|
|
@@ -212,7 +201,7 @@ CREATE EXTERNAL VOLUME IF NOT EXISTS pipe_event_volume
|
|
|
212
201
|
#### 步骤 3:创建 PIPE(EVENT_NOTIFICATION 模式)
|
|
213
202
|
|
|
214
203
|
```sql
|
|
215
|
-
--
|
|
204
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
216
205
|
CREATE PIPE IF NOT EXISTS my_oss_event_pipe
|
|
217
206
|
INGEST_MODE = 'EVENT_NOTIFICATION'
|
|
218
207
|
VIRTUAL_CLUSTER = 'my_vc'
|
|
@@ -245,7 +234,7 @@ USING CSV;
|
|
|
245
234
|
#### 步骤 1:创建目标表
|
|
246
235
|
|
|
247
236
|
```sql
|
|
248
|
-
--
|
|
237
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
249
238
|
CREATE TABLE IF NOT EXISTS my_schema.target_table (
|
|
250
239
|
id STRING,
|
|
251
240
|
name STRING,
|
|
@@ -257,7 +246,7 @@ CREATE TABLE IF NOT EXISTS my_schema.target_table (
|
|
|
257
246
|
#### 步骤 2:创建存储连接(access_id/access_key 语法)
|
|
258
247
|
|
|
259
248
|
```sql
|
|
260
|
-
--
|
|
249
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
261
250
|
CREATE STORAGE CONNECTION IF NOT EXISTS my_batch_conn
|
|
262
251
|
TYPE OSS
|
|
263
252
|
ENDPOINT = 'oss-cn-shanghai-internal.aliyuncs.com'
|
|
@@ -273,7 +262,7 @@ CREATE STORAGE CONNECTION IF NOT EXISTS my_batch_conn
|
|
|
273
262
|
#### 步骤 3:创建外部 Volume(启用目录自动刷新)
|
|
274
263
|
|
|
275
264
|
```sql
|
|
276
|
-
--
|
|
265
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
277
266
|
CREATE EXTERNAL VOLUME IF NOT EXISTS my_batch_volume
|
|
278
267
|
LOCATION 'oss://my-bucket/data-path/'
|
|
279
268
|
USING CONNECTION my_batch_conn
|
|
@@ -293,7 +282,7 @@ CREATE EXTERNAL VOLUME IF NOT EXISTS my_batch_volume
|
|
|
293
282
|
#### 步骤 4a:INSERT INTO 从 Volume 导入(支持过滤转换)
|
|
294
283
|
|
|
295
284
|
```sql
|
|
296
|
-
--
|
|
285
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
297
286
|
INSERT INTO my_schema.target_table
|
|
298
287
|
SELECT * FROM VOLUME my_batch_volume (
|
|
299
288
|
id STRING,
|
|
@@ -315,7 +304,7 @@ WHERE amount > 0;
|
|
|
315
304
|
#### 步骤 4b:COPY INTO 从 Volume 导入(简洁语法)
|
|
316
305
|
|
|
317
306
|
```sql
|
|
318
|
-
--
|
|
307
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
319
308
|
COPY INTO my_schema.target_table
|
|
320
309
|
FROM VOLUME my_batch_volume (
|
|
321
310
|
id STRING,
|
|
@@ -334,7 +323,7 @@ FROM VOLUME my_batch_volume (
|
|
|
334
323
|
#### 步骤 5:验证导入结果
|
|
335
324
|
|
|
336
325
|
```sql
|
|
337
|
-
--
|
|
326
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
338
327
|
SELECT COUNT(*) AS total_rows FROM my_schema.target_table;
|
|
339
328
|
SELECT * FROM my_schema.target_table LIMIT 10;
|
|
340
329
|
```
|
|
@@ -346,7 +335,7 @@ SELECT * FROM my_schema.target_table LIMIT 10;
|
|
|
346
335
|
### 查看 PIPE 详细状态
|
|
347
336
|
|
|
348
337
|
```sql
|
|
349
|
-
--
|
|
338
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
350
339
|
DESC PIPE EXTENDED my_oss_pipe;
|
|
351
340
|
```
|
|
352
341
|
|
|
@@ -359,7 +348,7 @@ DESC PIPE EXTENDED my_oss_pipe;
|
|
|
359
348
|
### 查看加载历史
|
|
360
349
|
|
|
361
350
|
```sql
|
|
362
|
-
--
|
|
351
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
363
352
|
SELECT * FROM load_history('my_schema.target_table')
|
|
364
353
|
ORDER BY last_load_time DESC
|
|
365
354
|
LIMIT 20;
|
|
@@ -372,7 +361,7 @@ LIMIT 20;
|
|
|
372
361
|
PIPE 执行的作业会自动打上 `query_tag`,格式为:`pipe.<workspace_name>.<schema_name>.<pipe_name>`
|
|
373
362
|
|
|
374
363
|
```sql
|
|
375
|
-
--
|
|
364
|
+
-- 通过 cz-cli sql "<SQL>" --sync 执行
|
|
376
365
|
-- 在 JOBS 列表中过滤 PIPE 相关作业
|
|
377
366
|
SHOW JOBS WHERE query_tag = 'pipe.my_workspace.my_schema.my_oss_pipe';
|
|
378
367
|
```
|
|
@@ -450,10 +439,7 @@ DROP PIPE IF EXISTS my_oss_pipe;
|
|
|
450
439
|
|
|
451
440
|
---
|
|
452
441
|
|
|
453
|
-
## cz-cli
|
|
454
|
-
|
|
455
|
-
> 仅在 cz-cli 可用且 MCP 不可用时使用本节。步骤编号与上方 MCP 路径对应。
|
|
456
|
-
> 所有操作通过 `cz-cli agent run` 委托给内置 agent 完成,agent 内置完整的 MCP 工具访问能力。
|
|
442
|
+
## cz-cli 执行路径
|
|
457
443
|
|
|
458
444
|
### 模式 A:LIST_PURGE 扫描模式(cz-cli 版)
|
|
459
445
|
|
|
@@ -32,14 +32,14 @@ cz-cli workspace current Show current workspace
|
|
|
32
32
|
|
|
33
33
|
cz-cli task list List Studio tasks
|
|
34
34
|
cz-cli task create <name> --type <TYPE> Create task (SQL/PYTHON/SHELL/SPARK/FLOW)
|
|
35
|
-
cz-cli task content <task> Get task script and
|
|
36
|
-
cz-cli task save-content <task> --file <f> Save task script
|
|
35
|
+
cz-cli task content <task> Get task script, config and params (draft)
|
|
36
|
+
cz-cli task save-content <task> --file <f> Save task script; use --params '{"key":"val","dt":"bizdate","yd":"$[yyyy-MM-dd,-1d]"}' to set params (system params like bizdate/sys_plan_day/sys_biz_datetime etc. auto-detected)
|
|
37
37
|
cz-cli task save-config <task> Save task non-cron config, like retry, dependency
|
|
38
38
|
cz-cli task save-cron <task> Save task schedule config
|
|
39
39
|
cz-cli task deps <task> Show task dependencies (draft)
|
|
40
40
|
cz-cli task deploy <task> Publish/deploy a task (alias: online)
|
|
41
41
|
cz-cli task undeploy <task> Undeploy a task, irreversible (alias: offline)
|
|
42
|
-
cz-cli task execute <task> Execute ad-hoc
|
|
42
|
+
cz-cli task execute <task> Execute ad-hoc; auto-uses saved manual params as defaults (--param KEY=VAL overrides); warns if unresolved ${placeholders} remain (SQL will fail, Python/Shell silently keeps literal string)
|
|
43
43
|
cz-cli task delete <task> Delete draft/offline task
|
|
44
44
|
cz-cli task flow dag <task> Get flow DAG
|
|
45
45
|
cz-cli task flow create-node <task> Add node to flow
|
|
@@ -58,7 +58,7 @@ cz-cli runs wait <id> Poll until complete
|
|
|
58
58
|
cz-cli runs logs <id> Get execution log
|
|
59
59
|
cz-cli runs deps <task> Published dependencies
|
|
60
60
|
cz-cli runs stop <id> Stop a running instance
|
|
61
|
-
cz-cli runs refill <task>
|
|
61
|
+
cz-cli runs refill <task> --from D --to D Backfill date range. D accepts YYYY-MM-DD (day boundary) or YYYY-MM-DDTHH:MM:SS (exact datetime for hourly/minutely tasks)
|
|
62
62
|
cz-cli runs rerun <id> Rerun failed instance
|
|
63
63
|
cz-cli runs stats Run statistics summary
|
|
64
64
|
|
|
@@ -100,6 +100,7 @@ cz-cli datasource sample <name_or_id> <catalog> <object>
|
|
|
100
100
|
6. **State-changing operations** (deploy/undeploy/execute/delete/refill): confirm intent with user first.
|
|
101
101
|
7. **Multi-environment**: use `--profile <name>` to target a specific environment.
|
|
102
102
|
8. **On `NO_PROFILE` error**: guide user to run `cz-cli setup`.
|
|
103
|
+
9. **补数/回填/重跑历史数据 → `runs refill`**: when user says "补数", "回填", "重跑历史", "backfill", "re-run historical data", use `cz-cli runs refill <task> --from YYYY-MM-DD --to YYYY-MM-DD`. This is under `runs`, NOT `task`.
|
|
103
104
|
|
|
104
105
|
## Companion Skills
|
|
105
106
|
|