华为云用户手册

  • 基本概念 设备 设备指的是在实际场景中拥有传感器的装置。在IoTDB当中,所有的传感器都应有其对应的归属的设备。 传感器 传感器是指在实际场景中的一种检测装置,它能感受到被测量的信息,并能将感受到的信息按一定规律变换成为电信号或其他所需形式的信息输出并发送给IoTDB。在IoTDB当中,存储的所有的数据及路径,都是以传感器为单位进行组织。 存储组 用户可以将任意前缀路径设置成存储组。如果有4条时间序列,如“root.vehicle.d1.s1”、“root.vehicle.d1.s2”、“root.vehicle.d2.s1”和“root.vehicle.d2.s2”,路径“root.vehicle”下的两个设备d1、d2可能属于同一个业主或者同一个厂商,因此关系紧密。这时候就可以将前缀路径“root.vehicle”指定为一个存储组,这将使得IoTDB将其下的所有设备的数据存储在同一个文件夹下。如果以后“root.vehicle”路径下增加了新的设备,也将属于该存储组。 设置合理数量的存储组可以带来性能的提升。既不会因为产生过多的存储文件(夹)导致频繁切换IO降低系统速度(并且会占用大量内存且出现频繁的内存-文件切换),也不会因为过少的存储文件夹(降低了并发度从而)导致写入命令阻塞。 用户应根据自己的数据规模和使用场景,平衡存储文件的存储组设置,以达到更好的系统性能。 时间序列 时间序列是IoTDB中的核心概念。时间序列可以被看作产生时序数据的传感器所在的完整路径,在IoTDB中所有的时间序列必须以root开始、以传感器作为结尾。
  • Structured Streaming常用概念 Input Source 输入数据源,数据源需要支持根据offset重放数据,不同的数据源有不同的容错性。 Sink 数据输出,Sink要支持幂等性写入操作,不同的sink有不同的容错性。 outputMode 结果输出模式,当前支持3种输出模: Complete Mode:整个更新的结果集都会写入外部存储。整张表的写入操作将由外部存储系统的连接器完成。 Append Mode:当时间间隔触发时,只有在Result Table中新增加的数据行会被写入外部存储。这种方式只适用于结果集中已经存在的内容不希望发生改变的情况下,如果已经存在的数据会被更新,不适合适用此种方式。 Update Mode:当时间间隔触发时,只有在Result Table中被更新的数据才会被写入外部存储系统。注意,和Complete Mode方式的不同之处是不更新的结果集不会写入外部存储。 Trigger 输出触发器,当前支持以下几种trigger: 默认:以微批模式执行,每个批次完成后自动执行下个批次。 固定间隔:固定时间间隔执行。 一次执行:只执行一次query,完成后退出。 连续模式:实验特性,可实现低至1ms延迟的流处理(推荐100ms)。 Structured Streaming支持微批模式和连续模式。微批模式不能保证对数据的低延迟处理,但是在相同时间下有更大的吞吐量;连续模式适合毫秒级的数据处理延迟,当前暂时还属于实验特性。 在当前版本中,若需要使用流流Join功能,则output模式只能选择append模式。 图6 微批模式运行过程简图 图7 连续模式运行过程简图
  • Spark SQL常用概念 DataSet DataSet是一个由特定域的对象组成的强类型集合,可通过功能或关系操作并行转换其中的对象。 每个Dataset还有一个非类型视图,即由多个列组成的DataSet,称为DataFrame。 DataFrame是一个由多个列组成的结构化的分布式数据集合,等同于关系数据库中的一张表,或者是R/Python中的data frame。DataFrame是Spark SQL中的最基本的概念,可以通过多种方式创建,例如结构化的数据集、Hive表、外部数据库或者是RDD。
  • Spark Streaming常用概念 Dstream DStream(又称Discretized Stream)是Spark Streaming提供的抽象概念。 DStream表示一个连续的数据流,是从数据源获取或者通过输入流转换生成的数据流。从本质上说,一个DStream表示一系列连续的RDD。RDD是一个只读的、可分区的分布式数据集。 DStream中的每个RDD包含了一个区间的数据。如图4所示。 图4 DStream与RDD关系 应用到DStream上的所有算子会被转译成下层RDD的算子操作,如图5所示。这些下层的RDD转换会通过Spark引擎进行计算。DStream算子隐藏大部分的操作细节,并且提供了方便的High-level API给开发者使用。 图5 DStream算子转译
  • 操作步骤 打开IDEA工具,选择“Create New Project”。 图1 创建工程 在“New Project”页面,选择“Scala”开发环境,并选择“Scala Module”,然后单击“Next”。 如果您需要新建Java语言的工程,选择对应参数即可。 图2 选择开发环境 在工程信息页面,填写工程名称和存放路径,设置JDK版本和Scala SDK,然后单击“Finish”完成工程创建。 图3 填写工程信息
  • 编译并运行程序 在IDEA中右侧单击“Maven”,展开“Lifecycle”,双击“package”,对当前工程进行打包。 使用root用户登录ClickHouse客户端节点,创建运行目录,例如“/opt/test”,在IDEA的“target”目录下获取带有“-with-dependencies”的jar包,并将jar包和idea中conf文件夹一同上传到“/opt/test”目录,如: 执行如下命令,配置环境变量并运行jar包: cd 客户端安装路径 source bigdata_env cd /opt/test java -jar clickhouse-examples-1.0-SNAPSHOT-jar-with-dependencies.jar 显示结果如下: 调用ClickHouse的SpringBoot样例接口触发样例代码运行: Windows环境运行方式: 打开浏览器,输入:http://ClickHouse客户端节点IP:8080/clickhouse/executeQuery,查看浏览器返回信息: ClickHouse springboot client runs normally. Linux环境下执行运行方式: 登录ClickHouse客户端节点,执行如下命令,查看linux下shell日志打印和日志文件打印: curl http://localhost:8080/clickhouse/executeQuery vi clickhouse-springboot-example.log
  • 基本概念 设备 设备指的是在实际场景中拥有传感器的装置。在IoTDB当中,所有的传感器都应有其对应的归属的设备。 传感器 传感器是指在实际场景中的一种检测装置,它能感受到被测量的信息,并能将感受到的信息按一定规律变换成为电信号或其他所需形式的信息输出并发送给IoTDB。在IoTDB当中,存储的所有的数据及路径,都是以传感器为单位进行组织。 存储组 用户可以将任意前缀路径设置成存储组。如果有4条时间序列,如“root.vehicle.d1.s1”、“root.vehicle.d1.s2”、“root.vehicle.d2.s1”和“root.vehicle.d2.s2”,路径“root.vehicle”下的两个设备d1、d2可能属于同一个业主或者同一个厂商,因此关系紧密。这时候就可以将前缀路径“root.vehicle”指定为一个存储组,这将使得IoTDB将其下的所有设备的数据存储在同一个文件夹下。如果以后“root.vehicle”路径下增加了新的设备,也将属于该存储组。 设置合理数量的存储组可以带来性能的提升。既不会因为产生过多的存储文件(夹)导致频繁切换IO降低系统速度(并且会占用大量内存且出现频繁的内存-文件切换),也不会因为过少的存储文件夹(降低了并发度从而)导致写入命令阻塞。 用户应根据自己的数据规模和使用场景,平衡存储文件的存储组设置,以达到更好的系统性能。 时间序列 时间序列是IoTDB中的核心概念。时间序列可以被看作产生时序数据的传感器所在的完整路径,在IoTDB中所有的时间序列必须以root开始、以传感器作为结尾。
  • 在Windows中调测程序 确保本地的hosts文件中配置了远程集群所有主机的主机名和业务IP映射关系。 通过IntelliJ IDEA可直接运行Producer.java,如图1所示: 图1 运行Producer.java运行 运行后弹出控制台窗口,可以看到,Producer正在向默认topic(example-metric1)发送消息,每发送10条,打印一条日志。 图2 Producer运行窗口
  • 查看调测结果 ClickHouse springboot服务启动后,通过ClickHouse样例接口触发样例代码运行,在浏览器中输入需要执行具体操作的链接,如http://localhost:8080/clickhouse/executeQuery,返回结果: ClickHouse springboot client runs normally. 通过ClickHouse日志获取应用运行情况,即日志文件:clickhouse-springboot-example.log。 运行clickhouse-springboot样例后,控制台显示部分运行结果如下: . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.0) 2023-02-06 17:58:22.144 INFO 20556 --- [ main] c.h.f.c.e.s.r.ClickHouseApplication : Starting ClickHouseApplication using Java 1.8.0_181 on DESKTOP-64PQBSD with PID 20556 (D:\Code\cloudBU\sample_project\src\springboot\clickhouse-examples\clickhouse-rest-client-example\target\classes started by l00467039 in D:\Code\cloudBU\sample_project\src\springboot\clickhouse-examples\clickhouse-rest-client-example) 2023-02-06 17:58:22.146 INFO 20556 --- [ main] c.h.f.c.e.s.r.ClickHouseApplication : No active profile set, falling back to 1 default profile: "default" 2023-02-06 17:58:22.815 INFO 20556 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2023-02-06 17:58:22.820 INFO 20556 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2023-02-06 17:58:22.821 INFO 20556 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.63] 2023-02-06 17:58:22.928 INFO 20556 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2023-02-06 17:58:22.928 INFO 20556 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 750 ms 2023-02-06 17:58:23.175 INFO 20556 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2023-02-06 17:58:23.181 INFO 20556 --- [ main] c.h.f.c.e.s.r.ClickHouseApplication : Started ClickHouseApplication in 1.388 seconds (JVM running for 3.989) 2023-02-06 17:58:32.640 INFO 20556 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2023-02-06 17:58:32.640 INFO 20556 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2023-02-06 17:58:32.641 INFO 20556 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms 2023-02-06 17:58:32.656 INFO 20556 --- [nio-8080-exec-1] .f.c.e.s.r.c.ClickHouseExampleController : Begin to execute query in clickhouse... 2023-02-06 17:58:32.658 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : loadBalancerIPList is 192.168.6.24, loadBalancerHttpPort is 21422, user is ckuser, clusterName is default_cluster, isSec is true. 2023-02-06 17:58:32.659 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : ckLbServerList current member is 0, ClickhouseBalancer is 192.168.6.24:21422 2023-02-06 17:58:32.664 INFO 20556 --- [nio-8080-exec-1] ru.yandex.clickhouse.ClickHouseDriver : Driver registered 2023-02-06 17:58:32.665 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:35.494 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql drop table if exists testdb.testtb on cluster default_cluster no delay, time is 216 ms 2023-02-06 17:58:35.495 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:36.074 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql drop table if exists testdb.testtb_all on cluster default_cluster no delay, time is 196 ms 2023-02-06 17:58:36.074 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:36.765 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql create database if not exists testdb on cluster default_cluster, time is 218 ms 2023-02-06 17:58:36.765 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:37.364 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql 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, time is 198 ms 2023-02-06 17:58:37.366 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:37.872 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql create table testdb.testtb_all on cluster default_cluster as testdb.testtb ENGINE = Distributed(default_cluster,testdb,testtb, rand());, time is 160 ms 2023-02-06 17:58:38.959 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 591 ms 2023-02-06 17:58:41.114 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 572 ms 2023-02-06 17:58:43.095 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 413 ms 2023-02-06 17:58:45.220 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 543 ms 2023-02-06 17:58:47.207 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 406 ms 2023-02-06 17:58:49.236 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 460 ms 2023-02-06 17:58:51.197 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 390 ms 2023-02-06 17:58:53.233 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 466 ms 2023-02-06 17:58:55.355 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 555 ms 2023-02-06 17:58:57.321 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 386 ms 2023-02-06 17:58:58.832 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Inert all batch time is 20564 ms 2023-02-06 17:58:58.832 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:59.256 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql select * from testdb.testtb_all order by age limit 10, time is 119 ms 2023-02-06 17:58:59.257 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:59.972 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql select toYYYYMM(date),count(1) from testdb.testtb_all group by toYYYYMM(date) order by count(1) DESC limit 10, time is 289 ms 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_234 0 2022-12-16 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_1805 0 2022-12-21 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_3359 0 2022-12-13 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_4275 0 2022-12-09 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_4307 0 2022-12-20 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_4586 0 2022-12-02 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_6326 0 2022-12-18 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_9878 0 2022-12-06 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_2482 0 2022-12-18 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_2904 0 2022-12-25 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202201 8628 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202208 8587 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202205 8558 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202210 8547 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202207 8463 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202203 8379 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202204 8351 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202206 8300 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202209 8297 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202212 8228
  • 操作步骤 运行结果会有如下成功信息: ... 2020-09-09 22:11:48,496 INFO [main] example.TestMain: Entering testCreateTable. 2020-09-09 22:11:48,894 INFO [main] example.TestMain: Creating table... 2020-09-09 22:11:50,545 INFO [main] example.TestMain: Master: 10-1-131-140,16000,1441784082485 Number of backup masters: 1 10-1-131-130,16000,1441784098969 Number of live region servers: 3 10-1-131-150,16020,1441784158435 10-1-131-130,16020,1441784126506 10-1-131-140,16020,1441784118303 Number of dead region servers: 0 Average load: 1.0 Number of requests: 0 Number of regions: 3 Number of regions in transition: 0 2020-09-09 22:11:50,562 INFO [main] example.TestMain: Lorg.apache.hadoop.hbase.NamespaceDescriptor;@11c6af6 2020-09-09 22:11:50,562 INFO [main] example.TestMain: Table created successfully. 2020-09-09 22:11:50,563 INFO [main] example.TestMain: Exiting testCreateTable. 2020-09-09 22:11:50,563 INFO [main] example.TestMain: Entering testMultiSplit. 2020-09-09 22:11:50,630 INFO [main] example.TestMain: MultiSplit successfully. 2020-09-09 22:11:50,630 INFO [main] example.TestMain: Exiting testMultiSplit. 2020-09-09 22:11:50,630 INFO [main] example.TestMain: Entering testPut. 2020-09-09 22:11:51,148 INFO [main] example.TestMain: Put successfully. 2020-09-09 22:11:51,148 INFO [main] example.TestMain: Exiting testPut. 2020-09-09 22:11:51,148 INFO [main] example.TestMain: Entering createIndex. ... 在Windows环境运行样例代码时会出现下面的异常,但是不影响业务: java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. HBase/Phoenix对接SpringBoot运行结果 在浏览器上访问链接“http://样例运行节点IP地址:8080/hbase/HBaseDemo”和“http://样例运行节点IP地址:8080/hbase/PhoenixDemo”,IDEA正常打印日志,请求返回“finish HBase”和“finish Phoenix",如下图所示: 图1 返回“finish HBase” 图2 返回“finish Phoenix" 日志说明 日志级别默认为INFO,可以通过调整日志打印级别(DEBUG,INFO,WARN,ERROR,FATL)来显示更详细的信息。可以通过修改“log4j.properties”文件来实现,如: hbase.root.logger=INFO,console ... log4j.logger.org.apache.zookeeper=INFO #log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG log4j.logger.org.apache.hadoop.hbase=INFO # Make these two classes DEBUG-level. Make them DEBUG to see more zk debug. log4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO log4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO ...
  • 查看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运行结果 在浏览器上访问链接“http://样例运行节点IP地址:8080/doris/example/executesql”,IDEA正常打印日志,请求返回如下图所示: 图1 返回样例运行信息 父主题: 在Linux下调测程序
  • 查看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运行结果 在浏览器上访问链接“http://样例运行节点IP地址:8080/doris/example/executesql”,IDEA正常打印日志,请求返回如下图所示: 图1 返回样例运行信息 父主题: 在Linux下调测程序
  • Structured Streaming常用概念 Input Source 输入数据源,数据源需要支持根据offset重放数据,不同的数据源有不同的容错性。 Sink 数据输出,Sink要支持幂等性写入操作,不同的sink有不同的容错性。 outputMode 结果输出模式,当前支持3种输出模: Complete Mode:整个更新的结果集都会写入外部存储。整张表的写入操作将由外部存储系统的连接器完成。 Append Mode:当时间间隔触发时,只有在Result Table中新增加的数据行会被写入外部存储。这种方式只适用于结果集中已经存在的内容不希望发生改变的情况下,如果已经存在的数据会被更新,不适合适用此种方式。 Update Mode:当时间间隔触发时,只有在Result Table中被更新的数据才会被写入外部存储系统。注意,和Complete Mode方式的不同之处是不更新的结果集不会写入外部存储。 Trigger 输出触发器,当前支持以下几种trigger: 默认:以微批模式执行,每个批次完成后自动执行下个批次。 固定间隔:固定时间间隔执行。 一次执行:只执行一次query,完成后退出。 连续模式:实验特性,可实现低至1ms延迟的流处理(推荐100ms)。 Structured Streaming支持微批模式和连续模式。微批模式不能保证对数据的低延迟处理,但是在相同时间下有更大的吞吐量;连续模式适合毫秒级的数据处理延迟,当前暂时还属于实验特性。 在当前版本中,若需要使用流流Join功能,则output模式只能选择append模式。 图6 微批模式运行过程简图 图7 连续模式运行过程简图
  • Spark Streaming常用概念 Dstream DStream(又称Discretized Stream)是Spark Streaming提供的抽象概念。 DStream表示一个连续的数据流,是从数据源获取或者通过输入流转换生成的数据流。从本质上说,一个DStream表示一系列连续的RDD。RDD是一个只读的、可分区的分布式数据集。 DStream中的每个RDD包含了一个区间的数据。如图4所示。 图4 DStream与RDD关系 应用到DStream上的所有算子会被转译成下层RDD的算子操作,如图5所示。这些下层的RDD转换会通过Spark引擎进行计算。DStream算子隐藏大部分的操作细节,并且提供了方便的High-level API给开发者使用。 图5 DStream算子转译
  • Spark SQL常用概念 DataSet DataSet是一个由特定域的对象组成的强类型集合,可通过功能或关系操作并行转换其中的对象。 每个Dataset还有一个非类型视图,即由多个列组成的DataSet,称为DataFrame。 DataFrame是一个由多个列组成的结构化的分布式数据集合,等同于关系数据库中的一张表,或者是R/Python中的data frame。DataFrame是Spark SQL中的最基本的概念,可以通过多种方式创建,例如结构化的数据集、Hive表、外部数据库或者是RDD。
  • 操作步骤 运行结果会有如下成功信息: 2016-07-13 14:36:12,736 INFO [main] basic.CreateTableSample: Create table sampleNameSpace:sampleTable successful! 2016-07-13 14:36:15,426 INFO [main] basic.ModifyTableSample: Modify table sampleNameSpace:sampleTable successfully. 2016-07-13 14:36:16,708 INFO [main] basic.MultiSplitSample: Mmulti split table sampleNameSpace:sampleTable successfully. 2016-07-13 14:36:17,299 INFO [main] basic.PutDataSample: Successfully put 9 items data into sampleNameSpace:sampleTable. 2016-07-13 14:36:18,992 INFO [main] basic.ScanSample: Scan data successfully. 2016-07-13 14:36:20,532 INFO [main] basic.DeletaDataSample: Successfully delete data from table sampleNameSpace:sampleTable. 2016-07-13 14:36:21,006 INFO [main] acl.AclSample: Grant ACL for table sampleNameSpace:sampleTable successfully. 2016-07-13 14:36:27,836 INFO [main] index.CreateIndexSample: Successfully add index for table sampleNameSpace:sampleTable. 在Windows环境运行样例代码时会出现下面的异常,但是不影响业务: java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. HBase/Phoenix对接SpringBoot运行结果: 在浏览器上访问链接“http://样例运行节点IP地址:8080/hbase/HBaseDemo”和“http://样例运行节点IP地址:8080/hbase/PhoenixDemo”,IDEA正常打印日志,请求返回“finish HBase”和“finish Phoenix",如下图所示: 图1 返回“finish HBase” 图2 返回“finish Phoenix" 日志说明 日志级别默认为INFO,可以通过调整日志打印级别(DEBUG,INFO,WARN,ERROR,FATL)来显示更详细的信息。可以通过修改log4j.properties文件来实现,如: hbase.root.logger=INFO,console ... log4j.logger.org.apache.zookeeper=INFO #log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG log4j.logger.org.apache.hadoop.hbase=INFO # Make these two classes DEBUG-level. Make them DEBUG to see more zk debug. log4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO log4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO ...
  • 查看调测结果 ClickHouse springboot服务启动后,通过ClickHouse样例接口触发样例代码运行,在浏览器中输入需要执行具体操作的链接,如http://localhost:8080/clickhouse/executeQuery,返回结果: ClickHouse springboot client runs normally. 通过ClickHouse日志获取应用运行情况,即日志文件:clickhouse-springboot-example.log。 运行clickhouse-springboot样例后,控制台显示部分运行结果如下: . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.0) 2023-02-06 17:58:22.144 INFO 20556 --- [ main] c.h.f.c.e.s.r.ClickHouseApplication : Starting ClickHouseApplication using Java 1.8.0_181 on DESKTOP-64PQBSD with PID 20556 (D:\Code\cloudBU\sample_project\src\springboot\clickhouse-examples\clickhouse-rest-client-example\target\classes started by l00467039 in D:\Code\cloudBU\sample_project\src\springboot\clickhouse-examples\clickhouse-rest-client-example) 2023-02-06 17:58:22.146 INFO 20556 --- [ main] c.h.f.c.e.s.r.ClickHouseApplication : No active profile set, falling back to 1 default profile: "default" 2023-02-06 17:58:22.815 INFO 20556 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2023-02-06 17:58:22.820 INFO 20556 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2023-02-06 17:58:22.821 INFO 20556 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.63] 2023-02-06 17:58:22.928 INFO 20556 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2023-02-06 17:58:22.928 INFO 20556 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 750 ms 2023-02-06 17:58:23.175 INFO 20556 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2023-02-06 17:58:23.181 INFO 20556 --- [ main] c.h.f.c.e.s.r.ClickHouseApplication : Started ClickHouseApplication in 1.388 seconds (JVM running for 3.989) 2023-02-06 17:58:32.640 INFO 20556 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2023-02-06 17:58:32.640 INFO 20556 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2023-02-06 17:58:32.641 INFO 20556 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms 2023-02-06 17:58:32.656 INFO 20556 --- [nio-8080-exec-1] .f.c.e.s.r.c.ClickHouseExampleController : Begin to execute query in clickhouse... 2023-02-06 17:58:32.658 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : loadBalancerIPList is 192.168.6.24, loadBalancerHttpPort is 21422, user is ckuser, clusterName is default_cluster, isSec is true. 2023-02-06 17:58:32.659 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : ckLbServerList current member is 0, ClickhouseBalancer is 192.168.6.24:21422 2023-02-06 17:58:32.664 INFO 20556 --- [nio-8080-exec-1] ru.yandex.clickhouse.ClickHouseDriver : Driver registered 2023-02-06 17:58:32.665 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:35.494 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql drop table if exists testdb.testtb on cluster default_cluster no delay, time is 216 ms 2023-02-06 17:58:35.495 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:36.074 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql drop table if exists testdb.testtb_all on cluster default_cluster no delay, time is 196 ms 2023-02-06 17:58:36.074 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:36.765 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql create database if not exists testdb on cluster default_cluster, time is 218 ms 2023-02-06 17:58:36.765 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:37.364 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql 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, time is 198 ms 2023-02-06 17:58:37.366 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:37.872 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql create table testdb.testtb_all on cluster default_cluster as testdb.testtb ENGINE = Distributed(default_cluster,testdb,testtb, rand());, time is 160 ms 2023-02-06 17:58:38.959 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 591 ms 2023-02-06 17:58:41.114 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 572 ms 2023-02-06 17:58:43.095 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 413 ms 2023-02-06 17:58:45.220 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 543 ms 2023-02-06 17:58:47.207 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 406 ms 2023-02-06 17:58:49.236 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 460 ms 2023-02-06 17:58:51.197 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 390 ms 2023-02-06 17:58:53.233 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 466 ms 2023-02-06 17:58:55.355 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 555 ms 2023-02-06 17:58:57.321 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Insert batch time is 386 ms 2023-02-06 17:58:58.832 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Inert all batch time is 20564 ms 2023-02-06 17:58:58.832 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:59.256 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql select * from testdb.testtb_all order by age limit 10, time is 119 ms 2023-02-06 17:58:59.257 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Try times is 0, current load balancer is 192.168.6.24:21422. 2023-02-06 17:58:59.972 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.restclient.impl.Util : Execute sql select toYYYYMM(date),count(1) from testdb.testtb_all group by toYYYYMM(date) order by count(1) DESC limit 10, time is 289 ms 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_234 0 2022-12-16 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_1805 0 2022-12-21 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_3359 0 2022-12-13 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_4275 0 2022-12-09 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_4307 0 2022-12-20 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_4586 0 2022-12-02 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_6326 0 2022-12-18 2023-02-06 17:58:59.973 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_9878 0 2022-12-06 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_2482 0 2022-12-18 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : huawei_2904 0 2022-12-25 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202201 8628 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202208 8587 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202205 8558 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202210 8547 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202207 8463 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202203 8379 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202204 8351 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202206 8300 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202209 8297 2023-02-06 17:58:59.974 INFO 20556 --- [nio-8080-exec-1] c.h.f.c.e.s.r.impl.ClickHouseFunc : 202212 8228
  • 操作步骤 通过运行日志可查看应用提交后的执行详情,例如,hbase-example样例运行成功后,显示信息如下: 2020-07-13 14:36:12,736 INFO [main] basic.CreateTableSample: Create table sampleNameSpace:sampleTable successful! 2020-07-13 14:36:15,426 INFO [main] basic.ModifyTableSample: Modify table sampleNameSpace:sampleTable successfully. 2020-07-13 14:36:16,708 INFO [main] basic.MultiSplitSample: Mmulti split table sampleNameSpace:sampleTable successfully. 2020-07-13 14:36:17,299 INFO [main] basic.PutDataSample: Successfully put 9 items data into sampleNameSpace:sampleTable. 2020-07-13 14:36:18,992 INFO [main] basic.ScanSample: Scan data successfully. 2020-07-13 14:36:20,532 INFO [main] basic.DeletaDataSample: Successfully delete data from table sampleNameSpace:sampleTable. 2020-07-13 14:36:21,006 INFO [main] acl.AclSample: Grant ACL for table sampleNameSpace:sampleTable successfully. 2020-07-13 14:36:27,836 INFO [main] index.CreateIndexSample: Successfully add index for table sampleNameSpace:sampleTable. HBase/Phoenix对接SpringBoot运行结果: 在浏览器上访问链接“http://样例运行节点IP地址:8080/hbase/HBaseDemo”和“http://样例运行节点IP地址:8080/hbase/PhoenixDemo”,IDEA正常打印日志,请求返回“finish HBase”和“finish Phoenix",如下图所示: 图1 返回“finish HBase” 图2 返回“finish Phoenix"
  • 编译并运行程序 在IDEA中右侧单击“Maven”,展开“Lifecycle”,双击“package”,对当前工程进行打包。 使用root用户登录ClickHouse客户端节点,创建运行目录,例如“/opt/test”,在IDEA的“target”目录下获取带有“-with-dependencies”的jar包,并将jar包和idea中conf文件夹一同上传到“/opt/test”目录,如: 执行如下命令,配置环境变量并运行jar包: cd 客户端安装路径 source bigdata_env cd /opt/test java -jar clickhouse-examples-1.0-SNAPSHOT-jar-with-dependencies.jar 显示结果如下: 调用ClickHouse的SpringBoot样例接口触发样例代码运行: Windows环境运行方式: 打开浏览器,输入:http://ClickHouse客户端节点IP:8080/clickhouse/executeQuery,查看浏览器返回信息: ClickHouse springboot client runs normally. Linux环境下执行运行方式: 登录ClickHouse客户端节点,执行如下命令,查看linux下shell日志打印和日志文件打印: curl http://localhost:8080/clickhouse/executeQuery vi clickhouse-springboot-example.log
  • 应用场景 该解决方案基于开源项目InfluxDB-Cluster构建,可以帮助您在华为云上快速部署InfluxDB-Cluster + 弹性负载均衡 ELB高可用 时序数据库 集群。InfluxDB-Cluster是InfluxDB的一个社区集群版本,它借鉴了InfluxDB早期版本的集群功能代码思路,提供了可扩展、容灾等能力。搭配ELB实现对外服务的高可用,适用于数量大,访问频繁、业务可靠性要求较高的场景。
  • 快速部署 本章节主要帮助用户快速部署该解决方案。 表1 参数说明 参数名称 类型 是否可选 参数解释 默认值 vpc_name string 必填 虚拟私有云 VPC名称,子网名称({vpc_name}-subnet)前缀,负载均衡名称({vpc_name}-elb)及云服务器组名称({vpc_name}-svgroup)前缀,该模板使用新建VPC,不允许重名。取值范围:1-56个字符,仅支持英文字母、数字、_(下划线)、-(中划线)、.(点)。 influxdb-server-demo security_group_name string 必填 安全组名称,该模板使用新建安全组,安全组规则请参考安全组规则修改(可选)进行配置。取值范围:1-64个字符,仅支持数字、字母、_(下划线)、-(中划线)、.(点)。 influxdb-server-demo ecs_name string 必填 弹性云服务器 E CS 名称({ecs_name}-000X)前缀,单机版EIP名称({ecs_name}-eip_single)前缀,不允许重名。取值范围:1-53个字符,仅支持英文字母、数字、_(下划线)、-(中划线)、.(点)。 influxdb-server-demo ecs_flavor string 必填 弹性云服务器 ECS规格,其他规格请参考官网弹性云服务器规格清单 。 s6.large.2(2U4G) ecs_count number 必填 弹性云服务器 ECS数量,取值范围:单机版1台,高可用2台。 2 ecs_password string 必填 弹性云服务器 ECS密码。创建完成后,请参考重置ECS实例密码登录ECS控制台修改密码。取值范围:长度为8-26位,密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{()}]:,./?~#*)中的三种,密码不能包含用户名或用户名的逆序。管理员账户为root 。 空 system_disk_size number 必填 弹性云服务器 ECS系统盘大小,磁盘类型默认通用型SSD,单位:GB,取值范围为40-1,024,不支持缩盘。 40 eip_bandwidth_size number 必填 弹性公网IP带宽大小。该模板带宽的按需计费模式为按带宽计费。取值范围:1-2,000 Mbit/s。 5 influxdb_admin_user string 必填 InfluxDB服务器管理员用户名,默认:admin,取值范围:1-40个字符,包括字母、数字、下划线 (_)、连字符 (-) 和句点 (.)。 admin influxdb_admin_password string 必填 InfluxDB管理员密码,取值范围:支持的密码长度是8~32个字符,至少包含大写字母、小写字母、数字、特殊字符(!@$%^-_=+[{}]:,./?)中三种字符。 空 charging_mode string 必填 计费模式,默认自动扣费。可选值为:postPaid(按需计费)、prePaid(包年包月)。默认:postPaid。 postPaid charging_unit string 必填 订购周期类型,仅当charging_mode为prePaid(包年/包月)生效,此时该参数为必填参数。可选值为:month(月),year(年)。 month charging_period number 必填 订购周期,仅当charging_mode为prePaid(包年/包月)生效,此时该参数为必填参数。当charging_unit=month(周期类型为月)时,取值范围:1-9;当charging_unit=year(周期类型为年)时,取值范围:1-3。默认订购1个月。 1 登录华为云解决方案实践,选择“快速部署InfluxDB高可用集群”。单击 “一键部署”跳转至解决方案创建堆栈界面。 图1 解决方案实施库 在选择模板界面中,单击“下一步”。 图2 选择模板 在配置参数界面中,自定义填写堆栈名称,根据表1填写配置参数信息,然后单击“下一步”。 图3 参数配置 (可选,如果使用华为主账号或admin用户组下的 IAM 子账户可不选委托)在资源设置界面中,在权限委托下拉框中选择“rf_admin_trust”委托,单击“下一步”。 图4 资源栈设置 在配置确认页面中,单击“创建执行计划”。 图5 配置确认 在弹出的创建执行计划框中,自定义填写执行计划名称,单击“确定”。 图6 创建执行计划 单击“部署”,并且在弹出的执行计划确认框中单击“执行”。 图7 执行计划创建成功 图8 执行计划确认 (可选)如果计费模式选择“包年包月”,在余额不充足的情况下(所需总费用请参考2-表 资源和成本规划(包年包月))请及时登录费用中心,手动完成待支付订单的费用支付。 待“事件”中出现“Apply required resource success”,表示该解决方案已经部署完成。 图9 部署完成 集群版部署完成后,等待10分钟左右,远程登录服务器(ECS)。 图10 远程登录ECS 输入并运行以下命令查看集群状态 输入并运行:influxd-ctl show 图11 预期的集群状态 父主题: 实施步骤
  • 创建rf_admin_trust委托(可选) 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“ 统一身份认证 ”菜单。 图1 控制台管理界面 图2 统一身份认证菜单 进入“委托”菜单,搜索“rf_admin_trust”委托。 图3 委托列表 如果委托存在,则不用执行接下来的创建委托的步骤 如果委托不存在时执行接下来的步骤创建委托 单击步骤2界面中的“创建委托”按钮,在委托名称中输入“rf_admin_trust”,委托类型选择“云服务”,输入“ RFS ”,单击“下一步”。 图4 创建委托 在搜索框中输入”Tenant Administrator”并勾选搜索结果,单击“下一步”。 图5 选择策略 选择“所有资源”,并单击下一步完成配置。 图6 设置授权范围 “委托”列表中出现“rf_admin_trust”委托则创建成功。 图7 委托列表
  • 创建rf_admin_trust委托 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“统一身份认证”菜单。 图3 控制台管理界面 图4 统一身份认证菜单 进入“委托”菜单,搜索“rf_admin_trust”委托。 图5 委托列表 如果委托存在,则不用执行接下来的创建委托的步骤 如果委托不存在时执行接下来的步骤创建委托 单击步骤2界面中的“创建委托”按钮,在委托名称中输入“rf_admin_trust”,委托类型选择“云服务”,选择“RFS”,单击“下一步”。 图6 创建委托 在搜索框中输入“Tenant Administrator”权限和刚创建的“IAM Agency Management FullAccess”权限,并勾选搜索结果。 图7 选择策略Tenant Administrator 图8 选择策略IAM Agency Management FullAccess 选择“所有资源”,并单击下一步完成配置。 图9 设置授权范围 “委托”列表中出现“rf_admin_trust”委托则创建成功。 图10 委托列表
  • 快速部署 本章节主要帮助用户快速部署该解决方案。 方案部署时间因集群规模大小不同会有所增加 表1 参数填写说明 参数名称 类型 是否必填 参数解释 默认值 vpc_name String 必填 虚拟私有云名称前缀,命名方式为{vpc_name}_vpc,该模板新建vpc,不允许重名。取值范围:1-60个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点) building-cloud-phone-clusters-demo secgroup_name String 必填 安全组名称前缀,命名方式为{secgroup_name}_secgroup,该模板新建安全组,安全组规则请参考安全组规则修改(可选)。取值范围:1-57个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点)。 building-cloud-phone-clusters-demo cph_name String 必填 云手机服务器名称前缀,命名方式为{cph_name}_n(n为1到server_count),取值范围:1-58个字符,支持数字、字母、中文、_(下划线)、-(中划线)。 building-cloud-phone-clusters-demo cph_server_flavor String 必填 云手机服务器规格,规格请参考云手机规格服务器规格配置。默认为physical.rx1.xlarge (64核 | 256 GB | physical.rx1.xlarge)。 physical.rx1.xlarge cph_phone_flavor String 必填 云手机实例规格,规格请参考云手机规格实例规格配置。默认为rx1.cp.c15.d46.e1v1 (云手机 | 4 vCPUs | 16 GB | 46 GB | rx1.cp.c15.d46.e1v1 | 1280x720)。 rx1.cp.c15.d46.e1v1 phone_image_id String 必填 云手机镜像ID,更改此参数将创建一个新资源。不同服务器规格对应有不同的镜像id,请参考镜像更新记录配置。 空 keypair String 必填 账号密钥对名称,用于ADB登录云手机。取值范围:1-255个字符,支持字母、数字、_(下划线)、-(中划线),在密钥对管理选择或创建密钥对。 空 server_count String 必填 云手机服务器数量,通过变更云手机数量自定义集群规模,默认为 1。 1 function_name String 必填 函数名称前缀,命名方式为{function_name}_fgs,取值范围:1-56个字符,可包含字母、数字、_(下划线)、-(中划线),以大/小写字母开头,以字母或数字结尾。 building-cloud-phone-clusters-demo upload_bucket_name String 必填 对象存储服务 OBS桶名称,用于上传测试APK,全局唯一。取值范围:3~63个字符,仅支持小写字母、数字、-(中划线)、.(点)。 空 iam_domain Number 必填 IAM租户。取值范围:6~30个字符,支持数字、字母、_(下划线)、-(中划线),并且只能以字母开头,获取详见统一身份认证服务 IAM获取账号。 空 iam_user String 必填 IAM用户。取值范围:1~32个字符,支持数字、字母、_(下划线)、-(中划线)、.(点),不能以数字或空格开头,获取详见统一身份认证服务 IAM获取账号。 空 iam_password String 必填 IAM用户密码,取值范围:支持的密码长度是8~32个字符,至少包含大写字母、小写字母、数字、特殊字符(!@$%^-_=+[{}]:,./?)中三种字符。 空 charging_unit Number 必填 包年包月。有效值为“year”或“month”。当charging_mode(计费模式)为prePaid时,此选项为必填项。默认为month。 month charging_period String 必填 包年包月时长,当charging_unit取值为“year”,取值范围为1~3;取值为“month”,取值范围为1~9。默认为1。 1 登录华为云解决方案实践,选择“基于云手机搭建安卓测试集群”解决方案。单击“一键部署”,跳转至解决方案创建堆栈界面。 图1 解决方案实施库 在选择模板界面中,单击“下一步”。 图2 选择模板 在配置参数界面中,参考表1完成自定义参数填写,单击“下一步”。 图3 配置参数 在资源栈设置页面中,权限委托选择“rf_admin_trust”,单击“下一步”。 图4 资源栈设置 在配置确认页面中,单击“创建执行计划”。 图5 配置确认 在弹出的创建执行计划框中,自定义填写执行计划名称,单击“确定”。 图6 创建执行计划 待执行计划状态为“创建成功,待部署”后,单击“部署”,并且在弹出的执行计划确认框中单击“执行”。 图7 执行计划 图8 执行计划确认 (可选)如果计费模式选择“包年包月”,在余额不充足的情况下(所需总费用请参考2-表 资源和成本规划(包年包月))请及时登录费用中心,手动完成待支付订单的费用支付。 等待解决方案自动部署。部署成功后,单击“事件”,回显结果如下: 图9 资源创建成功 父主题: 实施步骤
  • 快速部署 本章节主要帮助用户快速部署“ 内容审核 -图片审核”解决方案。 表1 参数说明 参数名称 类型 是否可选 参数解释 默认值 functiongraph_name string 选填 函数工作流 FunctionGraph函数名称。不支持重名。取值范围:2-60个字符,可包含字母、数字、_(下划线)和-(中划线),以字母开头,以字母或数字结尾。默认:text-sentiment-demo。 text-sentiment-demo resource_bucket_name string 必填 对象存储服务OBS桶名称。命名格式为{resource_bucket_name}-obs,用于存放用户评论文本文件,全局唯一。取值范围: 长度 1-59个字符,以小写字母或数字开头,仅支持小写字母、数字、中划线(-)、点(.)。 result_bucket_name string 必填 对象存储服务OBS桶名称。命名格式为{result_bucket_name}-obs,用于存放文本语义情感分析结果的文件,全局唯一。取值范围: 长度 1-59个字符,以小写字母或数字开头,仅支持小写字母、数字、中划线(-)、点(.)。 text_type number 必填 文本的领域类别。全局唯一。取值范围: 0代表评论为自适应领域,1代表评论为电商领域,2代表评论为汽车领域。 0 登录华为云解决方案实践,选择“语义分析-情感分析”,单击“一键部署”,跳转至解决方案创建资源栈界面。 图1 解决方案实践 在选择模板界面中,单击“下一步”。 图2 选择模板 在配置参数界面中,参考表1 参数填写说明完成自定义参数填写,单击“下一步”。 图3 配置参数 在资源设置界面中,在权限委托下拉框中选择“rf_admin_trust”委托(可为空),单击“下一步”。 图4 资源栈设置 在配置确认界面中,单击“创建执行计划”。 图5 配置确认 在弹出的创建执行计划框中,自定义填写执行计划名称,单击“确定”。 图6 创建执行计划 单击“部署”,并且在弹出的执行计划确认框中单击“执行”。 图7 执行计划 图8 执行计划确认 (可选)如果计费模式选择“包年包月”,在余额不充足的情况下(所需总费用请参考2-表 资源和成本规划(包年包月))请及时登录费用中心,手动完成待支付订单的费用支付。 待“事件”中出现“Apply required resource success”,表示该解决方案已经部署完成。 图9 部署完成 父主题: 实施步骤
    AI
  • 约束与限制 部署该解决方案之前,您需 注册华为账号 并开通华为云,完成实名认证,且账号不能处于欠费或冻结状态。如果计费模式选择“包年包月”,请确保账户余额充足以便一键部署资源的时候可以自动支付;或者在一键部署的过程进入费用中心,找到“待支付订单”并手动完成支付。 卸载解决方案前,请先确保OBS桶中无数据,否则解决方案将卸载失败。 使用该解决方案前,需要开通 自然语言处理 NLP的情感分析(领域版)服务,开通流程请参考NLP开通服务。
    AI
  • 方案架构 该解决方案帮助用户快速在华为云上通过函数工作流 FunctionGraph调用自然语言处理NLP技术,分析用户评论文本的情感。解决方案架构图如下: 图1 方案架构图 该解决方案会部署如下资源: 创建两个对象存储服务OBS桶,一个用于存放用户上传的用户评论文段,当用户上传后,自动通知函数工作流进行处理,并将结果以JSON文件格式返回至另一个OBS桶中。 使用函数工作流FunctionGraph,用于实现调用情感分析服务业务逻辑,当收到OBS上传文段通知后,自动调用NLP情感分析服务进行语义识别,并将结果存放在OBS桶内。 使用NLP情感分析,提供用户评论情感分析。用户只需将文本上传至OBS桶,即可自动识别该文本情感(正负),以及标签置信度。
    AI
  • 给rf_admin_trust委托添加IAM Agency Management FullAccess策略(可选) 打开“统一身份认证”菜单 图12 统一身份认证菜单 进入“委托”菜单,选择rf_admin_trust委托 图13 委托列表 进入“授权记录”菜单,单击“授权”按钮 图14 授权记录 在搜索框输入IAM Agency Management FullAccess,勾选过滤出来的记录,单击下一步,并确认完成权限的配置 图15 配置IAM Agency Management FullAccess策略 配置好后的情况:rf_admin_trust委托拥有Tenant Administrator和IAM Agency Management FullAccess权限 图16 授权记录列表 创建rf_admin_trust委托 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“统一身份认证”菜单。 图17 控制台管理界面 图18 统一身份认证菜单 进入“委托”菜单,搜索“rf_admin_trust”委托。 图19 委托列表 如果委托存在,则不用执行接下来的创建委托的步骤 如果委托不存在时执行接下来的步骤创建委托
  • 创建rf_admin_trust委托(可选) 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“统一身份认证”菜单。 图1 控制台管理界面 图2 统一身份认证菜单 进入“委托”菜单,搜索“rf_admin_trust”委托。 图3 委托列表 如果委托存在,则不用执行接下来的创建委托的步骤 如果委托不存在时执行接下来的步骤创建委托 单击步骤2界面中的“创建委托”按钮,在委托名称中输入“rf_admin_trust”,委托类型选择“云服务”,选择“RFS”,单击“下一步”。 图4 创建委托 在搜索框中输入“Tenant Administrator”权限,并勾选搜索结果。 图5 选择策略 选择“所有资源”,并单击下一步完成配置。 图6 设置授权范围 “委托”列表中出现“rf_admin_trust”委托则创建成功。 图7 委托列表
  • 创建rf_amdin_trust委托 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“统一身份认证”菜单。 图1 控制台管理界面 图2 统一身份认证菜单 进入“委托”菜单,搜索“rf_admin_trust”委托。 图3 委托列表 如果委托存在,则不用执行接下来的创建委托的步骤 如果委托不存在时执行接下来的步骤创建委托 单击步骤2界面中的“创建委托”按钮,在委托名称中输入“rf_admin_trust”,选择“普通账号”,委托的账号,输入“op_svc_IAC”,单击“下一步”。 图4 创建委托 在搜索框中输入”Tenant Administrator”权限,并勾选搜索结果。 图5 选择策略 选择“所有资源”,并单击下一步完成配置。 图6 设置授权范围 “委托”列表中出现“rf_admin_trust”委托则创建成功。 图7 委托列表
共100000条