
# 在本地Windows环境中调测ClickHouse应用（MRS 3.3.0及之后版本）
#### 切换IDEA中使用的JDK版本（MRS 3.6.0-LTS及之后版本）
在调测程序前，需要先确认当前使用的JDK版本（IDEA中默认使用JDK 8），并根据实际需要修改。
以下操作以JDK 17为例，JDK 8操作类似。
1. 在IDEA中选择"File \> Project Structure"。 
   图1打开Project Structure   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000002529408551.png "点击放大")
   
   
2. 选择"Platform Settings \> SDKs \> + \> Add JDK..."。 
   图2Add JDK   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000002497728568.png "点击放大")
   
   
3. 选择本地下载好的JDK 17版本，选择"OK \> Apply \> OK"。 
   图3添加JDK版本   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000002529568519.png "点击放大")
   
   
4. 选择"Project"，在"SDK"中选择JDK 17版本。 
   图4选择JDK版本   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000002497888546.png "点击放大")
   
   
5. 将二次开发样例工程中的pom.xml文件中，"maven-compiler-plugin"参数中的"source"、"target"修改为实际使用的JDK版本，例如"17"。（如果使用其他JDK版本，请根据实际情况修改） 
   图5修改参数   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000002529408553.png "点击放大")
   
   
 
#### 编译并运行程序
在程序代码完成开发后，您可以在Windows环境中运行应用。本地和集群业务平面网络互通时，您可以直接在本地进行调测。
#### 调测ClickHouse应用
1. 单击IDEA右边Maven窗口的"Reload All Maven Projects"，进行maven项目依赖import。 
   图6reload projects   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001741907201.png "点击放大")
   
   
2. 在IDEA界面复制clickhouse-example.properties路径。右键clickhouse-example.properties文件，单击"Copy Path/Reference \> Absolute Path"。 
   ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   **事务样例工程无需执行此步骤。**
   图7复制配置文件绝对路径   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001741747341.png "点击放大")
   
   
3. 使用clickhouse-example.properties路径替换Demo.java中getProperties()方法中proPath的路径。 
   图8Demo.java路径替换   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001694027630.png "点击放大")
   
   
4. 使用clickhouse-example.properties路径替换ClickhouseJDBCHaDemo.java中initConnection()方法中proPath的路径。 
   ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   **事务样例工程无需执行此步骤。**
   图9ClickhouseJDBCHaDemo.java路径替换   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001694187118.png "点击放大")
   
   
5. 编译程序。 
   - 选择"Maven \> clickhouse-examples \> Lifecycle \> clean"，双击"clean"运行maven的clean命令。
   
   - 选择"Maven \> clickhouse-examples \> Lifecycle \> compile"，双击"compile"运行maven的compile命令。
   
   
   图10Maven的clean和compile   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001741907205.png "点击放大")
   
   
6. 单击"Run 'Demo.main()'"运行应用程序工程。 
   图11运行程序   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001741747349.png "点击放大")
   
   
 
#### 查看调测结果
ClickHouse应用程序运行完成后，可通过以下方式查看程序运行情况：
- 通过运行结果查看程序运行情况。
- 通过ClickHouse日志获取应用运行情况，即"logs"目录下的日志文件：clickhouse-example.log**。**
运行clickhouse-examples的完整样例后，控制台显示部分运行结果如下：
```
2023-09-19 16:20:48,344 | INFO  | main | loadBalancerIPList is 192.168.5.132, loadBalancerHttpPort is 21422, user is ck_user, clusterName is default_cluster, isSec is true, password is Admin12!. | com.huawei.clickhouse.examples.Demo.main(Demo.java:42)
2023-09-19 16:20:48,350 | INFO  | main | ckLbServerList current member is 0, ClickhouseBalancer is 192.168.5.132:21422 | com.huawei.clickhouse.examples.Demo.getCkLbServerList(Demo.java:110)
2023-09-19 16:20:48,436 | INFO  | main | Current load balancer is 192.168.5.132:21422 | com.huawei.clickhouse.examples.Util.exeSql(Util.java:68)
2023-09-19 16:20:50,781 | INFO  | main | Execute query:drop table if exists testdb.testtb on cluster default_cluster no delay | com.huawei.clickhouse.examples.Util.exeSql(Util.java:73)
2023-09-19 16:20:51,504 | INFO  | main | Execute time is 723 ms | com.huawei.clickhouse.examples.Util.exeSql(Util.java:77)
2023-09-19 16:20:51,511 | INFO  | main | Current load balancer is 192.168.5.132:21422 | com.huawei.clickhouse.examples.Util.exeSql(Util.java:68)
2023-09-19 16:20:51,897 | INFO  | main | Execute query:drop table if exists testdb.testtb_all on cluster default_cluster no delay | com.huawei.clickhouse.examples.Util.exeSql(Util.java:73)
2023-09-19 16:20:52,421 | INFO  | main | Execute time is 524 ms | com.huawei.clickhouse.examples.Util.exeSql(Util.java:77)
2023-09-19 16:20:52,422 | INFO  | main | Current load balancer is 192.168.5.132:21422 | com.huawei.clickhouse.examples.Util.exeSql(Util.java:68)
2023-09-19 16:20:52,946 | INFO  | main | Execute query:create database if not exists testdb on cluster default_cluster | com.huawei.clickhouse.examples.Util.exeSql(Util.java:73)
2023-09-19 16:20:53,405 | INFO  | main | Execute time is 458 ms | com.huawei.clickhouse.examples.Util.exeSql(Util.java:77)
2023-09-19 16:20:53,406 | INFO  | main | Current load balancer is 192.168.5.132:21422 | com.huawei.clickhouse.examples.Util.exeSql(Util.java:68)
2023-09-19 16:20:53,757 | INFO  | main | Execute query:create table testdb.testtb on cluster default_cluster (name String, age UInt8, date Date)engine=ReplicatedMergeTree('/clickhouse/tables/{shard}/testdb.testtb','{replica}') partition by toYYYYMM(date) order by age | com.huawei.clickhouse.examples.Util.exeSql(Util.java:73)
2023-09-19 16:20:54,243 | INFO  | main | Execute time is 485 ms | com.huawei.clickhouse.examples.Util.exeSql(Util.java:77)
2023-09-19 16:20:54,244 | INFO  | main | Current load balancer is 192.168.5.132:21422 | com.huawei.clickhouse.examples.Util.exeSql(Util.java:68)
2023-09-19 16:20:54,640 | INFO  | main | Execute query:create table testdb.testtb_all on cluster default_cluster as testdb.testtb ENGINE = Distributed(default_cluster,testdb,testtb, rand()); | com.huawei.clickhouse.examples.Util.exeSql(Util.java:73)
2023-09-19 16:20:55,175 | INFO  | main | Execute time is 535 ms | com.huawei.clickhouse.examples.Util.exeSql(Util.java:77)
2023-09-19 16:20:55,175 | INFO  | main | Current load balancer is 192.168.5.132:21422 | com.huawei.clickhouse.examples.Util.insertData(Util.java:143)
2023-09-19 16:20:58,868 | INFO  | main | Insert batch time is 503 ms | com.huawei.clickhouse.examples.Util.insertData(Util.java:160)
2023-09-19 16:21:01,015 | INFO  | main | Insert batch time is 631 ms | com.huawei.clickhouse.examples.Util.insertData(Util.java:160)
2023-09-19 16:21:02,521 | INFO  | main | Inert all batch time is 4163 ms | com.huawei.clickhouse.examples.Util.insertData(Util.java:164)
2023-09-19 16:21:02,522 | INFO  | main | Current load balancer is 192.168.5.132:21422 | com.huawei.clickhouse.examples.Util.exeSql(Util.java:68)
2023-09-19 16:21:03,051 | INFO  | main | Execute query:select * from testdb.testtb_all order by age limit 10 | com.huawei.clickhouse.examples.Util.exeSql(Util.java:73)
2023-09-19 16:21:03,430 | INFO  | main | Execute time is 379 ms | com.huawei.clickhouse.examples.Util.exeSql(Util.java:77)
2023-09-19 16:21:03,433 | INFO  | main | Current load balancer is 192.168.5.132:21422 | com.huawei.clickhouse.examples.Util.exeSql(Util.java:68)
2023-09-19 16:21:03,760 | INFO  | main | Execute query:select toYYYYMM(date),count(1) from testdb.testtb_all group by toYYYYMM(date) order by count(1) DESC limit 10 | com.huawei.clickhouse.examples.Util.exeSql(Util.java:73)
2023-09-19 16:21:04,361 | INFO  | main | Execute time is 600 ms | com.huawei.clickhouse.examples.Util.exeSql(Util.java:77)
2023-09-19 16:21:04,362 | INFO  | main | nameagedate | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,362 | INFO  | main | huawei_9122021-04-20 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,362 | INFO  | main | huawei_17152021-05-23 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,363 | INFO  | main | huawei_5242021-04-15 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,363 | INFO  | main | huawei_13392020-07-04 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,363 | INFO  | main | huawei_3492021-06-27 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,363 | INFO  | main | huawei_15502020-06-26 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,363 | INFO  | main | huawei_11532020-08-14 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,363 | INFO  | main | huawei_12562021-12-19 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,363 | INFO  | main | huawei_19572021-10-31 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,363 | INFO  | main | huawei_0572020-03-01 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,363 | INFO  | main | toYYYYMM(date)count() | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,364 | INFO  | main | 2021053 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,364 | INFO  | main | 2021102 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,364 | INFO  | main | 2021042 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,364 | INFO  | main | 2020082 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,364 | INFO  | main | 2020072 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,364 | INFO  | main | 2021062 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,364 | INFO  | main | 2020121 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,364 | INFO  | main | 2021091 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,364 | INFO  | main | 2020031 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:04,365 | INFO  | main | 2020111 | com.huawei.clickhouse.examples.Demo.queryData(Demo.java:158)
2023-09-19 16:21:05,044 | INFO  | main | Name is: huawei_9, age is: 12 | com.huawei.clickhouse.examples.ClickhouseJDBCHaDemo.queryData(ClickhouseJDBCHaDemo.java:78)
2023-09-19 16:21:05,044 | INFO  | main | Name is: huawei_17, age is: 15 | com.huawei.clickhouse.examples.ClickhouseJDBCHaDemo.queryData(ClickhouseJDBCHaDemo.java:78)
2023-09-19 16:21:05,045 | INFO  | main | Name is: huawei_5, age is: 24 | com.huawei.clickhouse.examples.ClickhouseJDBCHaDemo.queryData(ClickhouseJDBCHaDemo.java:78)
2023-09-19 16:21:05,045 | INFO  | main | Name is: huawei_13, age is: 39 | com.huawei.clickhouse.examples.ClickhouseJDBCHaDemo.queryData(ClickhouseJDBCHaDemo.java:78)
2023-09-19 16:21:05,045 | INFO  | main | Name is: huawei_3, age is: 49 | com.huawei.clickhouse.examples.ClickhouseJDBCHaDemo.queryData(ClickhouseJDBCHaDemo.java:78)
2023-09-19 16:21:05,045 | INFO  | main | Name is: huawei_15, age is: 50 | com.huawei.clickhouse.examples.ClickhouseJDBCHaDemo.queryData(ClickhouseJDBCHaDemo.java:78)
2023-09-19 16:21:05,045 | INFO  | main | Name is: huawei_11, age is: 53 | com.huawei.clickhouse.examples.ClickhouseJDBCHaDemo.queryData(ClickhouseJDBCHaDemo.java:78)
2023-09-19 16:21:05,045 | INFO  | main | Name is: huawei_12, age is: 56 | com.huawei.clickhouse.examples.ClickhouseJDBCHaDemo.queryData(ClickhouseJDBCHaDemo.java:78)
2023-09-19 16:21:05,045 | INFO  | main | Name is: huawei_19, age is: 57 | com.huawei.clickhouse.examples.ClickhouseJDBCHaDemo.queryData(ClickhouseJDBCHaDemo.java:78)
2023-09-19 16:21:05,046 | INFO  | main | Name is: huawei_0, age is: 57 | com.huawei.clickhouse.examples.ClickhouseJDBCHaDemo.queryData(ClickhouseJDBCHaDemo.java:78)
Process finished with exit code 0
```
