初始化 Client
ClickZettaClient
ClickZettaClient
是 Java SDK 的统一客户端。你可以用它创建 JDBC 连接、实时写入流和批量写入流。推荐在应用启动或任务开始时创建客户端,在任务结束时显式关闭。
概述
ClickZettaClient
ClickZettaClient
支持两种初始化方式:
- 使用完整 JDBC URL 初始化,适合已经从 Studio 复制连接串的场景。
- 使用拆分参数初始化,适合配置中心、环境变量或 Spring 配置文件管理连接信息的场景。
通过 JDBC URL 初始化
import com.clickzetta.client.ClickZettaClient;
public class ClientByUrlDemo {
public static void main(String[] args) {
String jdbcUrl = "jdbc:clickzetta://<instance_name>.<region_id>.api.clickzetta.com/<workspace_name>"
+ "?schema=<schema_name>&virtualCluster=<vcluster_name>";
ClickZettaClient client = ClickZettaClient.newBuilder()
.url(jdbcUrl)
.username("<username>")
.password("<password>")
.build();
client.close();
}
}
通过连接参数初始化
import com.clickzetta.client.ClickZettaClient;
public class ClientByParamsDemo {
public static void main(String[] args) {
ClickZettaClient client = ClickZettaClient.newBuilder()
.service("<region_id>.api.clickzetta.com")
.instance("<instance_name>")
.workspace("<workspace_name>")
.schema("<schema_name>")
.vcluster("<vcluster_name>")
.username("<username>")
.password("<password>")
.build();
client.close();
}
}
参数说明
| 参数 | 是否必填 | 说明 |
|---|
service
service | 是 | Lakehouse 服务地址,例如 cn-shanghai-alicloud.api.clickzetta.com
cn-shanghai-alicloud.api.clickzetta.com |
instance
instance | 是 | Lakehouse 服务实例名称 |
workspace
workspace | 是 | 工作空间名称 |
schema
schema | 否 | 默认 SCHEMA;未指定时 SDK 使用 public
public |
vcluster
vcluster | 是 | 默认计算集群;构建 ClickZettaClient
ClickZettaClient 时必须指定 |
username
username | 是 | 登录用户名 |
password
password | 是 | 登录密码 |
⚠️ 注意:不要把真实用户名和密码提交到 Git。生产环境建议通过环境变量、密钥管理服务或应用配置中心注入。
创建下游对象
ClickZettaClient
ClickZettaClient
创建完成后,可以继续创建 JDBC 连接或写入流:
import com.clickzetta.client.BulkloadStreamV2;
import com.clickzetta.client.ClickZettaClient;
import com.clickzetta.client.RealtimeStream;
import com.clickzetta.client.RowStream;
import com.clickzetta.platform.client.api.BulkLoadOperation;
import java.sql.Connection;
public class ClientDownstreamObjectsDemo {
public static void main(String[] args) throws Exception {
ClickZettaClient client = ClickZettaClient.newBuilder()
.url(args[0])
.username(args[1])
.password(args[2])
.build();
try {
try (Connection connection = client.getJdbcConnection()) {
System.out.println("Connected to Lakehouse.");
}
RealtimeStream realtimeStream = client.newRealtimeStreamBuilder()
.operate(RowStream.RealTimeOperate.APPEND_ONLY)
.schema(args[3])
.table(args[4])
.build();
realtimeStream.close();
BulkloadStreamV2 bulkloadStream = client.newBulkloadStreamV2Builder()
.withOperation(BulkLoadOperation.APPEND)
.createStream(client, args[3], args[4]);
bulkloadStream.close();
} finally {
client.close();
}
}
}
实际使用时需要补充对应类的 import,并按业务场景配置写入模式和参数。实时写入的完整用法见 实时写入数据,批量写入的完整用法(含提交流程)见 批量写入数据(Bulkload)。
关闭客户端
使用完成后必须关闭客户端,释放底层连接和线程资源:
调用
client.close()
client.close()
关闭客户端。
建议在业务代码中使用
try/finally
try/finally
保证异常情况下也能关闭:
import com.clickzetta.client.ClickZettaClient;
public class ClientCloseDemo {
public static void main(String[] args) {
ClickZettaClient client = ClickZettaClient.newBuilder()
.url(args[0])
.username(args[1])
.password(args[2])
.build();
try {
// 使用 client 执行查询或写入。
} finally {
client.close();
}
}
}
相关文档