
# 在Linux环境中调测Doris应用
#### 操作场景
在程序代码完成开发后，您可以上传Jar包至Linux环境中运行应用。
#### 前提条件
- Linux环境已安装JDK，版本号需要和IntelliJ IDEA导出Jar包使用的JDK版本一致。
- 当Linux环境所在主机不是集群中的节点时，需要在节点的**hosts**文件中设置主机名和IP地址映射。主机名和IP地址请保持一一对应。
 
#### 编译并运行JDBC和SpringBoot程序
1. 导出Jar包。
   
   构建Jar包方式有以下两种：
   - 方法一： 选择"Maven \> *样例工程名称* \> Lifecycle \> clean"，双击"clean"运行maven的clean命令。
     选择"Maven \> *样例工程名称* \> Lifecycle \> install"，双击"install"运行maven的install命令。
     图1maven工具clean和install   
     ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001722934077.png) 
   
   
   
   - 方法二：在IDEA的下方Terminal窗口进入"pom.xml"所在目录，手动输入**mvn clean install** 命令进行编译。
     图2"mvn clean install"编译   
     ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001675014532.png "点击放大")
     编译完成，打印"BUILD SUCCESS"，生成target目录，生成Jar包在target目录中。
     
   
   
   
   
2. 是否运行Doris对接SpringBoot样例： 
   - 是，执行以下步骤运行样例：
     1. 在Linux环境新建运行目录，将"target"目录下的"**doris-rest-client-example-\*.jar**"放到该路径下。
     
     2. 切换到运行目录，执行以下命令，运行Jar包。 **java -jar doris-rest-client-example-\*.jar**
        
      
   
   - 否，执行[4]。
   
   
   
   
3. 导出样例项目依赖的jar包。
   
   在IDEA的下方Terminal窗口或其他命令行工具进入"pom.xml"所在目录。执行命令以下命令：
   **mvn dependency:copy-dependencies -DoutputDirectory=lib**
   在"pom.xml"所在目录将生成**lib**文件夹，其中包含样例项目所依赖的jar包。
   
   
4. 准备依赖的Jar包和配置文件。
   
   1. 在Linux环境新建目录，例如"/opt/test"，并创建子目录"lib"。将样例工程依赖的Jar包导出，将[1]生成的Jar包，以及[3]生成的Jar包，上传到Linux的"lib"目录。
   
   2. 在"/opt/test"根目录新建脚本"run.sh"，修改内容如下并保存：
      ```
      #!/bin/sh
      BASEDIR=`cd $(dirname $0);pwd`
      cd ${BASEDIR}
      for file in ${BASEDIR}/lib/*.jar
      do
      i_cp=$i_cp:$file
      echo "$file"
      done
      java -cp .${i_cp} com.huawei.bigdata.doris.example.JDBCExample
      ```
      其中，com.huawei.bigdata.doris.example.JDBCExample为举例，具体以实际样例代码为准。
      
   
   
   
   
5. 切换到"/opt/test"，执行以下命令，运行Jar包。 
   **sh run.sh**
   
   
 
#### 编译并运行Stream Load程序（MRS 3.3.1-LTS及之后版本）
1. 在Linux环境新建目录，例如"/opt/test"，并将[1](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_540009.html#mrs_07_540009__li1856593316362)获取的"doris-stream-load-example"样例工程中的"../src/main/resources/test.csv"文件上传至该目录中。
2. 将"doris-stream-load-example"样例代码中的"getHttpPost"参数的值修改为"/opt/test/test.csv"。
3. 导出Jar包。 
   构建Jar包方式有以下两种：
   - 方法一： 选择"Maven \> *样例工程名称* \> Lifecycle \> clean"，双击"clean"运行maven的clean命令。
     选择"Maven \> *样例工程名称* \> Lifecycle \> install"，双击"install"运行maven的install命令。
     图3maven工具clean和install   
     ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000002589078024.png) 
   
   
   
   - 方法二：在IDEA的下方Terminal窗口进入"pom.xml"所在目录，手动输入**mvn clean install** 命令进行编译。
     编译完成，打印"BUILD SUCCESS"，生成target目录，生成Jar包在target目录中。
     
   
   
   
   
4. 将"target"目录下的"**doris-stream-load-example-\*.jar** "放到[1]新建的目录下，例如"/opt/test"。
5. 切换到JDK所在目录，执行以下命令，运行Jar包。 
   **java -jar doris-stream-load-example-\*-jar-with-dependencies.jar**
   
   
 
#### 编译并运行Flink Jar写入数据至Doris程序（MRS 3.6.0-LTS及之后版本）
1. 导出Jar包。 
   1. 选择"Maven \> *样例工程名称* \> Lifecycle \> clean"，双击"clean"运行maven的clean命令。
   
   2. 选择"Maven \> *样例工程名称* \> Lifecycle \> package"，双击"package"进行编译。
   
   3. 编译完成，打印"BUILD SUCCESS"，生成target目录，生成Jar包在target目录中。
   
   
   
   
2. 使用具有FlinkServer管理员权限的用户登录Flink WebUI页面，在作业管理页面，单击"新建作业"，配置以下参数并单击"确定"： 
   - 类型：选择"Flink Jar"。
   
   - 名称：自定义作业名称。
   
   - 作业类型：选择"批作业"。
   
   
   
   
3. 创建作业成功并进入作业开发界面，在上传Jar文件页面，单击"本地jar文件"右侧的"选择"上传[1]导出的Jar包，其他参数可根据实际需求配置，具体介绍请参见[创建FlinkServer作业](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_24024.html)。
4. 单击"保存"保存配置，单击"提交"运行作业。
 
#### 查看Linux调测结果
- "doris-jdbc-example"样例运行成功后，显示信息如下：
  ```
  2023-08-17 23:13:13,473 | INFO  | main | Start execute doris example. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:41)
  2023-08-17 23:13:13,885 | INFO  | main | Start create database. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:44)
  2023-08-17 23:13:13,949 | INFO  | main | Database created successfully. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:46)
  2023-08-17 23:13:13,950 | INFO  | main | Start create table. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:49)
  2023-08-17 23:13:14,132 | INFO  | main | Table created successfully. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:51)
  2023-08-17 23:13:14,133 | INFO  | main | Start to insert data into the table. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:54)
  2023-08-17 23:13:14,733 | INFO  | main | Inserting data to the table succeeded. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:56)
  2023-08-17 23:13:14,733 | INFO  | main | Start to query table data. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:59)
  2023-08-17 23:13:15,079 | INFO  | main | Start to print query result. | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:121)
  2023-08-17 23:13:15,079 | INFO  | main | c1  c2  c3   | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:126)
  2023-08-17 23:13:15,079 | INFO  | main | 0  0  0   | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:134)
  2023-08-17 23:13:15,080 | INFO  | main | 1  10  100   | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:134)
  2023-08-17 23:13:15,080 | INFO  | main | 2  20  200   | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:134)
  2023-08-17 23:13:15,080 | INFO  | main | 3  30  300   | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:134)
  2023-08-17 23:13:15,080 | INFO  | main | 4  40  400   | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:134)
  2023-08-17 23:13:15,080 | INFO  | main | 5  50  500   | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:134)
  2023-08-17 23:13:15,080 | INFO  | main | 6  60  600   | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:134)
  2023-08-17 23:13:15,080 | INFO  | main | 7  70  700   | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:134)
  2023-08-17 23:13:15,081 | INFO  | main | 8  80  800   | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:134)
  2023-08-17 23:13:15,081 | INFO  | main | 9  90  900   | com.huawei.bigdata.doris.example.JDBCExample.query(JDBCExample.java:134)
  2023-08-17 23:13:15,081 | INFO  | main | Querying table data succeeded. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:61)
  2023-08-17 23:13:15,081 | INFO  | main | Start to delete the table. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:64)
  2023-08-17 23:13:15,114 | INFO  | main | Table deleted successfully. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:66)
  2023-08-17 23:13:15,124 | INFO  | main | Doris example execution successfully. | com.huawei.bigdata.doris.example.JDBCExample.main(JDBCExample.java:71)
  ```
  
- Doris对接SpringBoot运行结果
  - 通过SpringBoot运行Doris JDBC样例程序结果： 在浏览器访问链接"http://*样例运行节点IP地址*:8080/doris/example/executesql"，IDEA正常打印日志，请求返回如下图所示：
    图4Doris JDBC样例运行信息   
    ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000002518460579.png "点击放大") 
  
  - 通过SpringBoot运行DBalancer样例程序结果： 在浏览器访问链接"http://*样例运行节点IP地址*:8080/doris/example/dbalancer/executesql"，IDEA正常打印日志，请求返回如下图所示：
    图5Doris DBalancer样例运行信息   
    ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000002486260708.png "点击放大") 
   
- "doris-stream-load-example"样例运行成功后，显示信息如下：
  MRS 3.6.0-LTS之前版本：
  ```
  Start create database.
  Database created successfully.
  Start create table.
  Table created successfully.
  {
      "TxnId": 27,
      "Label": "3661e112-f0e9-4aaa-80c3-4c2b7aefeefb",
      "Comment": "",
      "TwoPhaseCommit": "false",
      "Status": "Success",
      "Message": "OK",
      "NumberTotalRows": 4,
      "NumberLoadedRows": 4,
      "NumberFilteredRows": 0,
      "NumberUnselectedRows": 0,
      "LoadBytes": 141,
      "LoadTimeMs": 387,
      "BeginTxnTimeMs": 58,
      "StreamLoadPutTimeMs": 137,
      "ReadDataTimeMs": 0,
      "WriteDataTimeMs": 94,
      "CommitAndPublishTimeMs": 95
  }
  curl{
      "TxnId": 27,
      "Label": "3661e112-f0e9-4aaa-80c3-4c2b7aefeefb",
      "Comment": "",
      "TwoPhaseCommit": "false",
      "Status": "Success",
      "Message": "OK",
      "NumberTotalRows": 4,
      "NumberLoadedRows": 4,
      "NumberFilteredRows": 0,
      "NumberUnselectedRows": 0,
      "LoadBytes": 141,
      "LoadTimeMs": 387,
      "BeginTxnTimeMs": 58,
      "StreamLoadPutTimeMs": 137,
      "ReadDataTimeMs": 0,
      "WriteDataTimeMs": 94,
      "CommitAndPublishTimeMs": 95
  }
  ```
  运行成功后，还可在MySQL客户端连接Doris，执行以下命令查看导入的数据：
  **select \* from** *doris_test_sink* **;**
  ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000002391653436.png "点击放大")
  MRS 3.6.0-LTS及之后版本：
  ```
  ... Stream load job result: {
      "TxnId": 17,
      "Label": "label_stream_load_400c9155-c74e-4c1c-bcfc-0aa5991d309b",
      "Comment": "",
      "TwoPhaseCommit": "false",
      "Status": "Success",
      "Message": "OK",
      "NumberTotalRows": 1,
      "NumberLoadedRows": 1,
      "NumberFilteredRows": 0,
      "NumberUnselectedRows": 0,
      "LoadBytes": 34,
      "LoadTimeMs": 361,
      "BeginTxnTimeMs": 64,
      "StreamLoadPutTimeMs": 171,
      "ReadDataTimeMs": 0,
      "WriteDataTimeMs": 47,
      "ReceiveDataTimeMs": 278,
      "CommitAndPublishTimeMs": 77
  }
   | com.example.stream.load.dorisstreamloadexample.DorisSecurityStreamLoader.testHttpsClient(DorisSecurityStreamLoader.java:198)
  Process finished with exit code 0
  ```
  运行成功后，还可在MySQL客户端连接Doris，执行以下命令查看导入的数据：
  **select \* from** *test_2.doris_test_sink* **;**
  ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000002486420672.png)
  
 
