当前位置: 首页 > news >正文

StarRocks 安装部署

StarRocks 安装部署

StarRocks端口:

官方《配置检查》有服务端口详细描述:
https://docs.starrocks.io/zh/docs/deployment/environment_configurations/


StarRocks架构:https://docs.starrocks.io/zh/docs/introduction/Architecture/
StarRocks存算一体架构部署模式:FE + BE 节点
StarRocks存算分离架构部署模式:FE + CN(BE被CN取代)

StarRocks节点/角色:
FE:
FE Frontend 简称 FE,是 StarRocks 的前端节点,负责元数据管理、客户端连接管理、查询规划和查询调度。每个 FE 在其内存中存储和维护一份完整的元数据副本,保证 FE 之间服务的一致性。
FE 分为 Leader FE 节点、Follower 节点和 Observer 节点。Follower 节点可以根据类似 Paxos 的 BDB JE(Berkeley DB Java Edition)协议选举主节点。

FE 端口:
8030:FE HTTP Server 端口(http_port)
9020:FE Thrift Server 端口(rpc_port)
9030:FE MySQL Server 端口(query_port)
9010:FE 内部通讯端口(edit_log_port)
6090:FE 云原生元数据服务 RPC 监听端口(cloud_native_meta_port)
注意:如需在集群中部署多个 FE 节点,您必须为所有 FE 节点分配相同的 http_port。官方文档有这个要求:https://docs.starrocks.io/zh/docs/deployment/deploy_manually/#%E7%AC%AC%E4%B8%80%E6%AD%A5%E5%90%AF%E5%8A%A8-leader-fe-%E8%8A%82%E7%82%B9


BE/CN:
BE:Backend 简称 BE,是 StarRocks 的后端节点,该节点在存算一体集群中负责数据存储和执行查询。
数据存储:BE 具有等效的数据存储能力。FE 根据预定义规则将数据分发到各个 BE。BE 转换导入的数据,将数据写入所需格式,并为数据生成索引。
SQL 执行:FE 根据查询的语义将每个 SQL 查询解析为逻辑执行计划,然后将逻辑计划转换为可以在 BE 上执行的物理执行计划。BE 在本地存储数据以及执行查询,避免了数据传输和复制,极大地提高了查询性能。存算分离。

CN:Compute Node,计算节点,该节点在存算分离或存算一体集群中负责执行查询。

BE/CN 端口:
9060:BE/CN Thrift Server 端口(be_port)
8040:BE/CN HTTP Server 端口(be_http_port)
9050:BE/CN 心跳服务端口(heartbeat_service_port)
8060:BE/CN bRPC 端口(brpc_port)
9070:BE/CN 的额外 Agent 服务端口。(starlet_port)


Broker:和外部HDFS/对象存储等外部数据对接的中转服务,辅助提供导入导出功能。

安装之前先检查是否有端口冲突(FE & BE/CN):
netstat -an |grep -E "8030|9020|9030|9010|6090"
netstat -an |grep -E "9060|8040|9050|8060|9070"


docker方式安装ClickHouse
部署官方介绍:
https://docs.starrocks.io/zh/docs/deployment/prepare_deployment_files/
内有安装包部署和docker部署方式的详细介绍。


关于starrocks的docker镜像:
从 v3.1.14、v3.2.10 和 v3.3.3 版本开始,StarRocks 提供的 Docker 镜像命名格式为 starrocks/{Component}-{OS}:{Version},其中 Component 表示镜像的组件(包括 fe、be和 cn),OS 表示操作系统(包括 centos 和 ubuntu),Version 表示版本号(例如 3.3.3)。Docker 将自动识别您的 CPU 架构并拉取相应的镜像。请确保您选择了正确版本的镜像。
在 v3.1.14、v3.2.10 和 v3.3.3 版本之前,StarRocks 提供的 Docker 镜像位于 starrocks/artifacts-ubuntu 和 starrocks/artifacts-centos7 仓库中。


下载指定tag的对应版本镜像:
docker pull starrocks/<Component>-<OS>:<version>
运行/启动docker容器:
docker run --rm starrocks/<Component>-<OS>:<version> tar -cf - -C /release . | tar -xvf -

我准备部署存算一体(需要部署FE+BE节点):
docker pull starrocks/fe-centos:3.3.3
docker pull starrocks/be-centos:3.3.3

国外的docker镜像已无法下载,尝试国内的:
https://docker.aityp.com/
搜索 starrocks

如果节点分开部署,则按需下载镜像:
docker.io/starrocks/fe-ubuntu:3.3-latest
docker.io/starrocks/be-ubuntu:3.3-latest
docker.io/starrocks/cn-ubuntu:3.3-latest

我直接下载allin1镜像:docker.io/starrocks/allin1-ubuntu:3.3.2
详情:https://docker.aityp.com/image/docker.io/starrocks/allin1-ubuntu:3.3.2


执行 docker pull 下载镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/starrocks/allin1-ubuntu:3.3.2

为了使用方便重新打个 tag
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/starrocks/allin1-ubuntu:3.3.2  starrocks/starrocks-allin1:3.3.2

查看镜像元数据
docker inspect starrocks/starrocks-allin1:3.3.2

运行/启动docker容器:
docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 -itd --name starrocks starrocks/starrocks-allin1:3.3.2

如果要映射 BE/CN Thrift Server 端口则执行: 
docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 -p 9060:9060 -itd --name starrocks starrocks/starrocks-allin1:3.3.2


StarRocks用户权限管理
参考:https://docs.starrocks.io/zh/docs/administration/user_privs/privilege_overview/
用户是可以被授权的实体,权限和角色均可以被赋予给用户。用户拥有的最大权限合集为自身权限与所拥有角色权限的并集。StarRocks 保证每个用户只能执行被授权的操作。
StarRocks 建议您在大部分情况下使用角色来分发权限。即,根据业务场景创建角色,将权限赋予给角色后,再将角色赋予给用户。

系统预置角色有:
root:拥有全局权限。root 用户默认拥有 root 角色。StarRocks 集群最初创建时,系统会自动生成 root 用户,该用户拥有 root 权限。由于 root 用户、角色的权限范围过大,建议您在后续使用和维护集群时创建新的用户和角色,避免直接使用此用户和角色。root 用户的密码请您妥善保管。
cluster_admin:拥有集群的管理权限。包含对节点的操作权限,如增加、减少节点。 cluster_admin 角色拥有对集群节点的上、下线权限,请妥善赋权。建议您不要将 cluster_admin 或任何包含此角色的自定义角色设置为用户的默认角色,防止因误操作而导致的节点变更。
db_admin:拥有数据库的管理权限。包含所有 CATALOG、数据库、表、视图、物化视图、函数及全局函数、资源组、插件等对象的所有操作权限。
user_admin:拥有用户和角色的管理权限。包含创建用户、角色、赋权等权限。
public:任何用户都拥有、并在任何会话下都默认激活此角色,包含新增用户。public 角色默认不拥有任何权限,您可以对此角色的权限范围进行修改。

命令行登录StarRocks数据库

进入docker容器本地连接StarRocks数据库创建用户和授权
docker exec -it starrocks /bin/bash
mysql -h127.0.0.1 -P9030 -uroot

-- DROP USER test;

-- 创建用户时不指定默认角色
-- CREATE USER test IDENTIFIED BY '1q2w3e';

-- 创建用户的同时指定默认角色(加 DEFAULT ROLE role_s)
CREATE USER test IDENTIFIED BY '1q2w3e' DEFAULT ROLE db_admin;

-- 激活角色
-- 默认激活角色
默认角色为用户提供了一道基础的权限屏障。
例如,用户 A 拥有 role_query 和 role_delete 两个角色,分别包含了查询和删除的权限。StarRocks 建议您仅将 role_query 作为默认角色,以防止误执行 DELETE 或 TRUNCATE 等高危操作而导致数据丢失。
当您确认需要执行上述操作时,可以在手动设置激活角色后执行。
当用户没有默认角色时,在登录集群后自动激活系统预置的 public 角色。

激活默认角色可以通过 CREATE USER 的 DEFAULT ROLE 关键字进行设置,例如:
CREATE USER test IDENTIFIED BY '1q2w3e' DEFAULT ROLE db_admin;
也可以在后续通过 ALTER USER 进行更改,同时也可以通过 SET DEFAULT ROLE 更改。

-- 手动激活角色
除了默认角色,用户也可以在会话内手动选择激活一个或多个已拥有的角色。您可以通过 SHOW GRANTS 命令查看当前用户拥有的权限和可以激活的角色,并通过 SET ROLE 命令来设置当前的激活角色,生效范围为当前会话。
SET ROLE 命令是覆盖的。例如,用户登录时是默认激活了 default_role,执行 SET ROLE role_s之后,用户此时拥有的是 role_s 的权限和自身权限。

mysql> exit;

重新以新用户登录
mysql -h127.0.0.1 -P9030 -utest -p

-- 查看当前用户拥有的权限和可以激活的角色
SHOW GRANTS;

mysql> show grants;
+--------------+---------+--------------------------------+
| UserIdentity | Catalog | Grants                         |
+--------------+---------+--------------------------------+
| 'test'@'%'   | NULL    | GRANT 'db_admin' TO 'test'@'%' |
+--------------+---------+--------------------------------+


-- 查询当前登录会话的角色
-- SELECT CURRENT_ROLE();

mysql> SELECT CURRENT_ROLE();
+----------------+
| CURRENT_ROLE() |
+----------------+
| db_admin       |
+----------------+

如果当前角色为空的话,会提示相关操作无权限,需要手动激活权限 SET ROLE role_s,会话级生效。


-- 如果要修改用户的默认角色
-- SET DEFAULT ROLE role_xxx

创建测试数据库 testdb 和测试表 test01


-- 创建数据库
CREATE DATABASE IF NOT EXISTS testdb;
USE testdb;


-- 创建表(主键表)
DROP TABLE IF EXISTS test01;
CREATE TABLE IF NOT EXISTS test01 (
    id INT NOT NULL,
    info STRING,
    cnt INT,
    uptime DATETIME
)
PRIMARY KEY (id)
DISTRIBUTED BY HASH (id)
;

-- 创建表-明细表(建表不指定属性默认为无主键表/明细表)
DROP TABLE IF EXISTS test02;
CREATE TABLE IF NOT EXISTS test02 (
    id INT,
    info STRING,
    cnt INT,
    uptime DATETIME
);


-- INSERT导入时不指定作业LABLE会自动生成LABLE
INSERT INTO test01 (id,info,cnt,uptime) VALUES (1,'aaa',100,'2024-11-10 08:30:21.111222'),(2,'bbb',102,'2024-11-11 08:35:58.333444');

-- INSERT导入时指定作业LABLE
INSERT INTO test01 WITH LABEL test01_002 (id,info,cnt,uptime) VALUES (1,'aaa',100,'2024-11-10 08:30:21.111222'),(2,'bbb',102,'2024-11-11 08:35:58.333444');
-- 查看INSERT导入作业结果
SHOW LOAD WHERE label="test01_002"; 

-- 覆盖写(覆盖目的表数据)
INSERT OVERWRITE test01 (id,info,cnt,uptime) VALUES (1,'aaa',100,'2024-11-10 08:30:21.111222'),(2,'bbb',102,'2024-11-11 08:35:58.333444');
-- INSERT OVERWRITE test01 WITH LABEL test01_005 (id,info,cnt,uptime) VALUES (1,'aaa',100,'2024-11-10 08:30:21.111222'),(2,'bbb',102,'2024-11-11 08:35:58.333444');
-- SHOW LOAD WHERE label="test01_005"; 


-- 清空表
TRUNCATE TABLE test01;
TRUNCATE TABLE test02;

查询数据:可通过 MySQL Client、DBeaver等 SQL 客户端工具连接 StarRocks 进行数据查询
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select version();"
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select * from test01;"
-- 指定 catalog.db.table 格式
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select * from default_catalog.testdb.test01;"


-- Stream Load 导入数据

Stream Load导入详细介绍可参考官方资料:https://docs.starrocks.io/zh/docs/sql-reference/sql-statements/loading_unloading/STREAM_LOAD/
Stream Load语法:
curl --location-trusted -u <username>:<password> -XPUT <url>
(
    data_desc
)
[opt_properties] 


curl StreamLoad 参数说明:
--location-trusted  
    此参数用于允许 curl 将认证凭据传输给任何重定向的 URL。
-u root  
    用于登录 StarRocks 的用户名。指定密码格式为 -u root:pwd,无密码格式为 -u root:

data_desc: 用于描述源数据文件,包括源数据文件的名称、格式、列分隔符、行分隔符、目标分区、以及与 StarRocks 表之间的列对应关系等。data_desc 中的参数可以分为三类:公共参数、CSV 适用的参数、以及 JSON 适用的参数。
opt_properties: 用于指定一些导入相关的可选参数。指定的参数设置作用于整个导入作业。
data_desc & opt_properties 详细介绍参考官网:https://docs.starrocks.io/zh/docs/sql-reference/sql-statements/loading_unloading/STREAM_LOAD/

-T filename  
    T 代表传输(Transfer),用于指定需要传输的文件名。
-H 设置 header 参数:
    label:crashdata-0  
        与此 Stream Load 作业关联的标签。标签必须唯一,因此如果多次运行作业,您可以添加一个数字保持递增。
    where: <condition1>[, <condition2>, ...] 可选参数,用于指定过滤条件。如果指定该参数,StarRocks 会按照指定的过滤条件对转换后的数据进行过滤。只有符合 WHERE 子句中指定的过滤条件的数据才会导入。
    column_separator:,  
        如果导入的文件使用单个 , 作为列分隔符,则设置如上所示。如果使用其他分隔符,则在此处设置该分隔符。常见分隔符包括 \t、, 和 |。
    skip_header:1  
        某些 CSV 文件会在首行(Header)记录所有的列名,还有些会在第二行记录所有列的数据类型信息。如果 CSV 文件有一或两个 Header 行,需要将 skip_header 设置为 1 或 2。如果您使用的 CSV 没有 Header 行,请将其设置为 0。
    enclose:\"  
        如果某些字段包含带有逗号的字符串,则需要用双引号括起该字段。本教程使用的示例数据集中,地理位置信息包含逗号,因此需将 enclose 设置为 \",其中 \ 用于转义 "。
    max_filter_ratio:1  
        导入数据中允许出现错误行的比例,范围 0~1,默认值为 0。理想情况下,应将其设置为 0,即当导入的数据中有任意一行出现错误时,导入作业会失败。本教程中需要将其设置为 1,即在调试过程中,允许所有数据行出现错误。
    timeout: 可选参数。用于导入作业的超时时间。取值范围:1 ~ 259200。单位:秒。默认值:600。除了 timeout 参数可以控制该导入作业的超时时间外,您还可以通过 FE 配置参数 stream_load_default_timeout_second 来统一控制 Stream Load 导入作业的超时时间。如果指定了timeout 参数,则该导入作业的超时时间以 timeout 参数为准;如果没有指定 timeout 参数,则该导入作业的超时时间以stream_load_default_timeout_second 为准。
    strict_mode: 
        可选参数。用于指定是否开严格模式。取值范围:true 和 false。默认值:false。true 表示开启,false 表示关闭。
        关于该模式的介绍,参见 严格模式(https://docs.starrocks.io/zh/docs/loading/load_concept/strict_mode/)
        如果开启严格模式,StarRocks 会把错误的数据行过滤掉,只导入正确的数据行,并返回错误数据详情。
        如果关闭严格模式,StarRocks 会把转换失败的错误字段转换成 NULL 值,并把这些包含 NULL 值的错误数据行跟正确的数据行一起导入。
        实际导入过程中,正确的数据行和错误的数据行都有可能存在 NULL 值。如果目标列不允许 NULL 值,则 StarRocks 会报错,并把这些包含 NULL 值的数据行过滤掉。
        对于 Stream Load、Broker Load、Routine Load 和 Spark Load,导入作业能够容忍的因数据质量不合格而过滤掉的错误数据行所占的最大比例,由作业的可选参数 max_filter_ratio 控制。INSERT 导入方式当前不支持 max_filter_ratio 参数。
        不同导入方式 strict_mode 默认值不同:        
        使用 Stream Load、Broker Load、Routine Load 和 Spark Load 执行数据导入时,需要通过参数 strict_mode 来设置严格模式。参数取值范围:true 和 false。默认值:false。true 表示开启,false 表示关闭。
        使用 INSERT 执行数据导入时,需要通过会话变量 enable_insert_strict 来设置严格模式。变量取值范围:true 和 false。默认值:true。true 表示开启,false 表示关闭。
    columns:  
        此参数用于将 CSV 文件中的列映射到 StarRocks 表中的列。当前教程中使用的 CSV 文件中有大量的列,而 StarRocks 表中的列经过裁剪,仅保留部分列。未包含在表中的列在导入过程中都将被跳过。
        注意:
        columns 参数支持数据转换逻辑,在 CSV 文件中经常会有不符合标准的日期和时间,导入时可以指定数据转换逻辑、将日期和时间数据转换为 DATETIME 类型的逻辑。
        例如:如果数据集中的日期是以 MM/DD/YYYY 为格式(CRASH_DATE 列)、时间以 HH:MI 为格式(CRASH_TIME)的2个单独的列:
        08/05/2014,9:10,BRONX,10469,40.8733019,-73.8536375,"(40.8733019, -73.8536375)",
        由于 StarRocks 中的 DATETIME 格式为 YYYY-MM-DD HH:MI:SS,因此需要转换数据集中的数据,将两列数据合并成一列、并以空格分隔。则此处 columns: 参数应为:
        -H "columns:tmp_CRASH_DATE, tmp_CRASH_TIME, CRASH_DATE=str_to_date(concat_ws(' ', tmp_CRASH_DATE, tmp_CRASH_TIME), '%m/%d/%Y %H:%i')
        说明:
        通过设置以上参数可实现以下目标:
        将 CSV 文件的第一列内容分配给 tmp_CRASH_DATE 列;
        将 CSV 文件的第二列内容分配给 tmp_CRASH_TIME 列;
        通过 concat_ws() 函数,使用空格将 tmp_CRASH_DATE 列和 tmp_CRASH_TIME 列连接在一起;
        通过 str_to_date() 函数使用连接后的字符串生成 DATETIME 数据;
        将生成的 DATETIME 数据存储在列 CRASH_DATE 中。
  timezone: 可选参数。用于指定导入作业所使用的时区。默认为东八区 (Asia/Shanghai)。该参数的取值会影响所有导入涉及的、跟时区设置有关的函数所返回的结果。受时区影响的函数有 strftime、alignment_timestamp 和 from_unixtime 等,具体请参见设置时区。导入参数 timezone 设置的时区对应“设置时区”中所述的会话级时区。
  load_mem_limit: 可选参数。导入作业的内存限制,最大不超过 BE(或 CN)的内存限制。单位:字节。默认内存限制为 2 GB。
  partial_update: 可选参数。部分更新。是否使用部分列更新。取值包括 TRUE 和 FALSE。默认值:FALSE。
  partial_update_mode: 部分更新模式。
      可选参数。指定部分更新的模式,取值包括 row 和 column:
      row:默认值,指定使用行模式执行部分更新,比较适用于较多列且小批量的实时更新场景。
      column:指定使用列模式执行部分更新,比较适用于少数列并且大量行的批处理更新场景。在该场景,开启列模式,更新速度更快。例如,在一个包含 100 列的表中,每次更新 10 列(占比 10%)并更新所有行,则开启列模式,更新性能将提高 10 倍。
  merge_condition: 可选参数。
      用于指定作为更新生效条件的列名。这样只有当导入的数据中该列的值大于等于当前值的时候,更新才会生效。StarRocks v2.5 起支持条件更新。参见通过导入实现数据变更。
      详情参考:https://docs.starrocks.io/zh/docs/loading/Load_to_Primary_Key_tables/
      注意:指定的列必须为非主键列,且仅主键表支持条件更新。
      
      StarRocks 的主键表支持通过 Stream Load、Broker Load 或 Routine Load 导入作业,对 StarRocks 表进行数据变更,包括插入、更新和删除数据。不支持通过 Spark Load 导入作业或 INSERT 语句对 StarRocks 表进行数据变更。
      StarRocks 还支持部分更新 (Partial Update) 和条件更新 (Conditional Update)。
      StarRocks 的主键表目前支持 UPSERT 和 DELETE 操作,不支持区分 INSERT 和 UPDATE 操作。
      在创建导入作业时,StarRocks 支持在导入作业的创建语句或命令中添加 __op 字段,用于指定操作类型。
      不同的导入方式,定义 __op 字段的方法也不相同:
          如果使用 Stream Load 导入方式,需要通过 columns 参数来定义 __op 字段。
          如果使用 Broker Load 导入方式,需要通过 SET 子句来定义 __op 字段。
          如果使用 Routine Load 导入方式,需要通过 COLUMNS 参数来定义 __op 字段。
      根据要做的数据变更操作,您可以选择添加或者不添加 __op 字段。不添加 __op 字段的话,默认为 UPSERT 操作。
      主要涉及的数据变更操作场景如下:
          1)当数据文件只涉及 UPSERT 操作时,可以不添加 __op 字段。
          2)当数据文件只涉及 DELETE 操作时,必须添加 __op 字段,并且指定操作类型为 DELETE。
          3)当数据文件中同时包含 UPSERT 和 DELETE 操作时,必须添加 __op 字段,并且确保数据文件中包含一个代表操作类型的列,取值为 0 或 1。其中,取值为 0 时代表 UPSERT 操作,取值为 1 时代表 DELETE 操作。
      使用说明:
          1)必须确保待导入的数据文件中每一行的列数都相同。
          2)所更新的列必须包含主键列。

      
-XPUT: 指定 HTTP 请求方法。必选参数。Stream Load 当前只支持 PUT 方法。
url: 用于指定 StarRocks 表的 URL 地址。必选参数。格式为  http://<fe_host>:<fe_http_port>/api/<database_name>/<table_name>/_stream_load
     您可以通过 SHOW frontends 命令查看 FE 节点的 IP 地址和 HTTP 端口号,例如:mysql -h192.168.1.250 -P9030 -uroot  -p -e "SHOW frontends;"


查看 FE 节点的信息:
mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW PROC '/frontends';"
或者
mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW frontends;"
Enter password: 
+------------------------------+-----------+-------------+----------+-----------+---------+--------+------------+------+-------+-------------------+---------------------+----------+--------+---------------------+---------------+
| Name                         | IP        | EditLogPort | HttpPort | QueryPort | RpcPort | Role   | ClusterId  | Join | Alive | ReplayedJournalId | LastHeartbeat       | IsHelper | ErrMsg | StartTime           | Version       |
+------------------------------+-----------+-------------+----------+-----------+---------+--------+------------+------+-------+-------------------+---------------------+----------+--------+---------------------+---------------+
| 127.0.0.1_9010_1731988679963 | 127.0.0.1 | 9010        | 8030     | 9030      | 9020    | LEADER | 1134139963 | true | true  | 180649            | 2025-01-08 08:33:14 | true     |        | 2025-01-06 07:34:32 | 3.3.2-857dd73 |
+------------------------------+-----------+-------------+----------+-----------+---------+--------+------------+------+-------+-------------------+---------------------+----------+--------+---------------------+---------------+


查看 BE 节点的信息:
mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW PROC '/backends';"
或者 
mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW backends;"
+-----------+-----------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------+---------------+--------------------------------------------------------+-------------------+-------------+----------+-------------------+------------+------------+---------------------------------------------------+----------+
| BackendId | IP        | HeartbeatPort | BePort | HttpPort | BrpcPort | LastStartTime       | LastHeartbeat       | Alive | SystemDecommissioned | ClusterDecommissioned | TabletNum | DataUsedCapacity | AvailCapacity | TotalCapacity | UsedPct | MaxDiskUsedPct | ErrMsg | Version       | Status                                                 | DataTotalCapacity | DataUsedPct | CpuCores | NumRunningQueries | MemUsedPct | CpuUsedPct | DataCacheMetrics                                  | Location |
+-----------+-----------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------+---------------+--------------------------------------------------------+-------------------+-------------+----------+-------------------+------------+------------+---------------------------------------------------+----------+
| 10001     | 127.0.0.1 | 9050          | 9060   | 8040     | 8060     | 2025-01-06 07:34:36 | 2025-01-08 08:32:04 | true  | false                | false                 | 87        | 100.417 MB       | 20.218 GB     | 91.651 GB     | 77.94 % | 77.94 %        |        | 3.3.2-857dd73 | {"lastSuccessReportTabletsTime":"2025-01-08 08:31:07"} | 20.316 GB         | 0.48 %      | 8        | 0                 | 2.17 %     | 0.0 %      | Status: Normal, DiskUsage: 0B/0B, MemUsage: 0B/0B |          |
+-----------+-----------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------+---------------+--------------------------------------------------------+-------------------+-------------+----------+-------------------+------------+------------+---------------------------------------------------+----------+

查看 Broker 节点信息:
mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW PROC '/brokers';"
+--------------+-----------+------+-------+---------------------+---------------------+--------+
| Name         | IP        | Port | Alive | LastStartTime       | LastUpdateTime      | ErrMsg |
+--------------+-----------+------+-------+---------------------+---------------------+--------+
| allin1broker | 127.0.0.1 | 8000 | true  | 2025-01-06 07:34:41 | 2025-01-08 08:44:04 |        |
+--------------+-----------+------+-------+---------------------+---------------------+--------+

-- Stream Load 导入数据示例

mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "TRUNCATE TABLE test01;"
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "SELECT * FROM test01;"

-- 从本地文件导入数据--UPSET(不指定__op、则默认UPSET)
-- StarRocks 的 Stream Load 导入方式需要使用 curl 命令,涉及许多参数
echo '1,"aaa",100,"2024-11-10 08:30:21.111222"
2,"bbb",102,"2024-11-11 08:35:58.333444"' > test01.csv

curl --location-trusted -u test:1q2w3e \
    -T ./test01.csv             \
    -H "label:test01_001"       \
    -H "column_separator:,"     \
    -H "skip_header:0"          \
    -H "enclose:\""             \
    -H "max_filter_ratio:0"     \
    -H "columns:id,info,cnt,uptime" \
    -XPUT http://localhost:8030/api/testdb/test01/_stream_load

-- 命令上指定用户密码方式: -u user:pwd
-- 命令上指定用户如果没有设置密码,则: -u user:
-- 命令上也可以不指定密码,等提示输入再输入密码,则:-u user
curl --location-trusted -u test \
    -T ./test01.csv             \
    -H "label:test01_002"       \
    -H "column_separator:,"     \
    -H "skip_header:0"          \
    -H "enclose:\""             \
    -H "max_filter_ratio:0"     \
    -H "columns:id,info,cnt,uptime" \
    -XPUT http://localhost:8030/api/testdb/test01/_stream_load


-- 导入时也可以不指定 columns(csv文件中的列数要一致):
curl --location-trusted -u test:1q2w3e \
    -T ./test01.csv             \
    -H "label:test01_003"       \
    -H "column_separator:,"     \
    -H "skip_header:0"          \
    -H "enclose:\""             \
    -H "max_filter_ratio:0"     \
    -XPUT http://localhost:8030/api/testdb/test01/_stream_load

-- 从本地文件导入数据--DELETE(必须指定__op,仅主键表支持DELETE操作,无主键表不支持。如果不指定__op则默认为UPSET)
curl --location-trusted -u test:1q2w3e \
    -T ./test01.csv             \
    -H "label:test01_004"       \
    -H "column_separator:,"     \
    -H "skip_header:0"          \
    -H "enclose:\""             \
    -H "max_filter_ratio:0"     \
    -H "columns:__op='delete'"     \
    -XPUT http://localhost:8030/api/testdb/test01/_stream_load

注意:仅主键表支持DELETE操作,如果是非主键表,上述命令执行后的效果是追加写的效果,多次执行,每次都会追加csv文件中的数据到目的表。


-- 如果csv文件数据中同时存在 UPSET 和 DELETE 的数据行,则需要在 csv 文件中包含 __op 字段、填写对应值(0 代表 UPSET;1 代表 DELETE)
-- 准备数据文件 test01_b.csv,数据中的第一列为临时列、值为0代表UPSET、1代表DELETE
echo '0,1,"aaa",100,"2024-11-10 08:30:21.111222"
1,2,"bbb",102,"2024-11-11 08:35:58.333444"' > test01_b.csv

查看准备好的csv文件内容:
root@2ce391eef088:/data/deploy/starrocks# cat test01_b.csv 
0,1,"aaa",100,"2024-11-10 08:30:21.111222"
1,2,"bbb",102,"2024-11-11 08:35:58.333444"


-- 目的表 INSERT 插入数据
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "INSERT OVERWRITE test01 (id,info,cnt,uptime) VALUES (1,'aaa',100,'2024-11-10 08:30:21.111222'),(2,'bbb',102,'2024-11-11 08:35:58.333444');"
-- 查询数据
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "SELECT * FROM test01;"

root@2ce391eef088:/data/deploy/starrocks# mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "SELECT * FROM test01;" 
Enter password: 
+------+------+------+----------------------------+
| id   | info | cnt  | uptime                     |
+------+------+------+----------------------------+
|    2 | bbb  |  102 | 2024-11-11 08:35:58.333444 |
|    1 | aaa  |  100 | 2024-11-10 08:30:21.111222 |
+------+------+------+----------------------------+

-- 执行csv导入(含UPSET和DELETE)
-- -H "columns:xxx" 中指定 __op=opflag 操作列(临时列opflag),后面指定csv数据文件中对应的数据列:opflag,id,info,cnt,uptime
curl --location-trusted -u test:1q2w3e \
    -T ./test01_b.csv             \
    -H "label:test01_005"       \
    -H "column_separator:,"     \
    -H "skip_header:0"          \
    -H "enclose:\""             \
    -H "max_filter_ratio:0"     \
    -H "columns:__op=opflag,opflag,id,info,cnt,uptime"     \
    -XPUT http://localhost:8030/api/testdb/test01/_stream_load

-- 执行结果:
root@2ce391eef088:/data/deploy/starrocks# curl --location-trusted -u test:1q2w3e \
>     -T ./test01_b.csv             \
>     -H "label:test01_013"       \
>     -H "column_separator:,"     \
>     -H "skip_header:0"          \
>     -H "enclose:\""             \
>     -H "max_filter_ratio:0"     \
>     -H "columns:__op=opflag,opflag,id,info,cnt,uptime"     \
>     -XPUT http://localhost:8030/api/testdb/test01/_stream_load
{
    "TxnId": 149,
    "Label": "test01_013",
    "Status": "Success",
    "Message": "OK",
    "NumberTotalRows": 2,
    "NumberLoadedRows": 2,
    "NumberFilteredRows": 0,
    "NumberUnselectedRows": 0,
    "LoadBytes": 86,
    "LoadTimeMs": 186,
    "BeginTxnTimeMs": 0,
    "StreamLoadPlanTimeMs": 2,
    "ReadDataTimeMs": 0,
    "WriteDataTimeMs": 58,
    "CommitAndPublishTimeMs": 124

执行后的效果是更新目的表中id=1的行、删除id=2的行。

-- 查询数据
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "SELECT * FROM test01;"

root@2ce391eef088:/data/deploy/starrocks# mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "SELECT * FROM test01;" 
Enter password: 
+------+------+------+----------------------------+
| id   | info | cnt  | uptime                     |
+------+------+------+----------------------------+
|    1 | aaa  |  100 | 2024-11-10 08:30:21.111222 |
+------+------+------+----------------------------+


导入后查询数据:
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select * from test01;"

root@2ce391eef088:/data/deploy/starrocks# mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select * from test01;" 
Enter password: 
+------+------+------+----------------------------+
| id   | info | cnt  | uptime                     |
+------+------+------+----------------------------+
|    1 | aaa  |  100 | 2024-11-10 08:30:21.111222 |
|    2 | bbb  |  102 | 2024-11-11 08:35:58.333444 |
|    1 | aaa  |  100 | 2024-11-10 08:30:21.111222 |
|    2 | bbb  |  102 | 2024-11-11 08:35:58.333444 |
+------+------+------+----------------------------+


指定数据目录(catalog)查询(格式为 catalog.db.table):
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select * from default_catalog.testdb.test01;"

数据目录(catalog)

-- 创建外部数据目录(External Catalog)
可参考:《StarRocks常用命令》中的 创建外部数据目录 介绍。


-- 查看当前集群中的所有 Catalog,包括 Internal Catalog 和 External Catalog
-- 注意:一个 StarRocks 集群中只有一个默认的 internal catalog,名为 default_catalog,不支持删除;default_catalog 也是 StarRocks 集群中唯一的 internal catalog

mysql> SHOW CATALOGS\G;

mysql> show catalogs;
+-----------------------+----------+------------------------------------------------------------------+
| Catalog               | Type     | Comment                                                          |
+-----------------------+----------+------------------------------------------------------------------+
| default_catalog       | Internal | An internal catalog contains this cluster's self-managed tables. |
| jdbc01_mysql_catalog  | Jdbc     | NULL                                                             |
| jdbc02_pg_catalog     | Jdbc     | NULL                                                             |
| jdbc03_oracle_catalog | Jdbc     | NULL                                                             |
+-----------------------+----------+------------------------------------------------------------------+
4 rows in set (0.00 sec)

Catalog:Catalog 名称。
Type:Catalog 类型。如果是 default_catalog,则返回 Internal。如果是 external catalog,则返回 external catalog 的类型,例如 Hive, Hudi, Iceberg。
Comment:Catalog 的备注。
  1)在创建 external catalog 时不支持为 external catalog 添加备注,所以如果是 external catalog,则返回的 Comment 为 NULL。
  2)如果是 default_catalog,则默认返回的 Comment 为 An internal catalog contains this cluster's self-managed tables.。default_catalog 是 StarRocks 集群中唯一的 internal catalog,不允许删除。

注意:
只有拥有 External Catalog USAGE 权限的用户才能查看到该 Catalog。如果没有该权限,仅返回 default_catalog。您可以使用 GRANT 命令进行授权操作。


StarRocks 连接方式

DBeaver连接StarRocks
DBeaver有对应的StarRocks类型,配置参数和MySQL类型参数基本相同。也可以直接用MySQL类型连接StarRocks。
数据库填写格式:catalog.database,例如:default_catalog.testdb

jdbcUrl(FE-MySQL): jdbc:mysql://y.y.y.y:9030
loadUrl(FE-HTTP): y.y.y.y:8030,y.y.y.y:8030,y.y.y.y:8030

如果用 DataX 连接 StarRocks,配置如下:
"writer": {
                    "name": "starrockswriter",
                    "parameter": {
                        "username": "xxxx",
                        "password": "xxxx",
                        "database": "xxxx",
                        "table": "xxxx",
                        "column": ["k1", "k2", "v1", "v2"],
                        "preSql": [],
                        "postSql": [], 
                        "jdbcUrl": "jdbc:mysql://x.x.x.x:9030",
                        "loadUrl": ["y.y.y.y:8030", "y.y.y.y:8030"],
                        "loadProps": {}
                    }
                }
CloudCanal:

Client地址/端口:ip/domain  :  9030 + 
Http地址/端口:ip/domain    :  8030 + 
数据库(database):catalog.testdb
认证方式(authType):账号密码
账号(user):user
密码(password):pwd

jdbcUrl(mysql)
loadUrl(http)

httpUrl
jdbcUrl

Catalog.Database


query_host:query_port  192.168.1.101:9030
http_host http_port    192.168.1.101:8030,192.168.1.102:8030,192.168.1.103:8030
=>
jdbcUrl = jdbc:mysql://192.168.1.101:9030
loadUrl = 192.168.1.101:8030,192.168.1.102:8030,192.168.1.103:8030
loadUrl = http://192.168.1.101:8030,http://192.168.1.102:8030,http://192.168.1.103:8030

相关文章:

StarRocks 安装部署

StarRocks 安装部署 StarRocks端口&#xff1a; 官方《配置检查》有服务端口详细描述&#xff1a; https://docs.starrocks.io/zh/docs/deployment/environment_configurations/ StarRocks架构&#xff1a;https://docs.starrocks.io/zh/docs/introduction/Architecture/ Sta…...

【深度学习|迁移学习】渐进式学习策略 (Progressive Learning Strategy)详述(一)

【深度学习|迁移学习】渐进式学习策略 (Progressive Learning Strategy)详述&#xff08;一&#xff09; 【深度学习|迁移学习】渐进式学习策略 (Progressive Learning Strategy)详述&#xff08;一&#xff09; 文章目录 【深度学习|迁移学习】渐进式学习策略 (Progressive L…...

关注搜索引擎蜘蛛压力

以前在建站的时候&#xff0c;他们说蜘蛛来抓取的频率越多越好&#xff0c;因为蜘蛛来抓取说明了网站更新速度快&#xff0c;受搜索引擎的欢迎&#xff0c;但是在最近的网站统计中&#xff0c;发现很多蜘蛛爬取的频次非常的高&#xff0c;比如有的蜘蛛一天能来网站几万次&#…...

Windows上通过Git Bash激活Anaconda

在Windows上配置完Anaconda后&#xff0c;普遍通过Anaconda Prompt激活虚拟环境并执行Python&#xff0c;如下图所示&#xff1a; 有时需要连续执行多个python脚本时&#xff0c;直接在Anaconda Prompt下可以通过在以下方式&#xff0c;即命令间通过&&连接&#xff0c;…...

【架构面试】一、架构设计认知

涉及分布式锁、中间件、数据库、分布式缓存、系统高可用等多个技术领域&#xff0c;旨在考查候选人的技术深度、架构设计能力与解决实际问题的能力。 1. 以 Redis 是否可以作为分布式锁为例&#xff1a; 用 Redis 实现分布式锁会存在哪些问题&#xff1f; 死锁&#xff1a;如果…...

【Redis】常见面试题

什么是Redis&#xff1f; Redis 和 Memcached 有什么区别&#xff1f; 为什么用 Redis 作为 MySQL 的缓存&#xff1f; 主要是因为Redis具备高性能和高并发两种特性。 高性能&#xff1a;MySQL中数据是从磁盘读取的&#xff0c;而Redis是直接操作内存&#xff0c;速度相当快…...

解决vsocde ssh远程连接同一ip,不同端口情况下,无法区分的问题

一般服务器会通过镜像分身或者容器的方式&#xff0c;一个ip分出多个端口给多人使用&#xff0c;但如果碰到需要连接同一user&#xff0c;同一个ip,不同端口的情况&#xff0c;vscode就无法识别&#xff0c;如下图所示&#xff0c;vscode无法区分该ip下不同端口的连接&#xff…...

Java设计模式—观察者模式

观察者模式 目录 观察者模式1、什么是观察者模式&#xff1f;2、观察者模式优缺点及注意事项&#xff1f;3、观察者模式实现&#xff1f;4、手写线程安全的观察者模式&#xff1f; 1、什么是观察者模式&#xff1f; - 实例&#xff1a;现实生活中很多事物都是依赖存在的&#x…...

Lua 环境的安装

1.安装Lua运行环境 本人采用的是在windows系统中使用cmd指令方式进行安装&#xff0c;安装指令如下&#xff1a; winget install "lua for windows" 也曾使用可执行程序安装过&#xff0c;但由于电脑是加密电脑&#xff0c;最后都已失败告终。使用此方式安装可以安…...

MySQL回表详解:原理、优化与实践

1. 简介 在MySQL的查询过程中&#xff0c;“回表”&#xff08;又叫“二次查询”&#xff09;是一个常见的概念&#xff0c;尤其在使用覆盖索引&#xff08;covering index&#xff09;或联合索引&#xff08;composite index&#xff09;时&#xff0c;回表操作常常会对查询性…...

算法——位运算

位运算知识点 01.01. 判定字符是否唯一 面试题 01.01. 判定字符是否唯一 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool isUnique(string astr) {//鸽巢原理if(astr.size()>26) return false;int bitmap 0;for(auto ch:astr){char i ch-a;//判断…...

CVE-2025-0411 7-zip 漏洞复现

文章目录 免责申明漏洞描述影响版本漏洞poc漏洞复现修复建议 免责申明 本文章仅供学习与交流&#xff0c;请勿用于非法用途&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任 漏洞描述 此漏洞 &#xff08;CVSS SCORE 7.0&#xff09; 允许远程攻击者绕…...

深度学习笔记——循环神经网络之LSTM

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍面试过程中可能遇到的循环神经网络LSTM知识点。 文章目录 文本特征提取的方法1. 基础方法1.1 词袋模型&#xff08;Bag of Words, BOW&#xff09;工作…...

超分辨率体积重建实现术前前列腺MRI和大病理切片组织病理学图像的3D配准

摘要: 磁共振成像(MRI)在前列腺癌诊断和治疗中的应用正在迅速增加。然而,在MRI上识别癌症的存在和范围仍然具有挑战性,导致即使是专家放射科医生在检测结果上也存在高度变异性。提高MRI上的癌症检测能力对于减少这种变异性并最大化MRI的临床效用至关重要。迄今为止,这种改…...

React第二十五章(受控组件/非受控组件)

React 受控组件理解和应用 React 受控组件 受控组件一般是指表单元素&#xff0c;表单的数据由React的 State 管理&#xff0c;更新数据时&#xff0c;需要手动调用setState()方法&#xff0c;更新数据。因为React没有类似于Vue的v-model&#xff0c;所以需要自己实现绑定事件…...

Vue演练场基础知识(七)插槽

为学习Vue基础知识&#xff0c;我动手操作通关了Vue演练场&#xff0c;该演练场教程的目标是快速体验使用 Vue 是什么感受&#xff0c;设置偏好时我选的是选项式 单文件组件。以下是我结合深入指南写的总结笔记&#xff0c;希望对Vue初学者有所帮助。 文章目录 十五. 插槽插槽…...

16 分布式session和无状态的会话

在我们传统的应用中session存储在服务端&#xff0c;减少服务端的查询压力。如果以集群的方式部署&#xff0c;用户登录的session存储在该次登录的服务器节点上&#xff0c;如果下次访问服务端的请求落到其他节点上就需要重新生成session&#xff0c;这样用户需要频繁的登录。 …...

docker 部署 java 项目详解

在平常的开发工作中&#xff0c;我们经常需要部署项目&#xff0c;开发测试完成后&#xff0c;最关键的一步就是部署。今天我们以若依项目为例&#xff0c;总结下部署项目的整体流程。简单来说&#xff0c;第一步&#xff1a;安装项目所需的中间件&#xff1b;第二步&#xff1…...

csapp笔记——2.3节整数运算

目录 无符号加法 补码加法 补码的非 无符号乘法 补码乘法 乘以常数 除以2的幂 无符号加法 对于的整数x,y&#xff0c;定义表示将x与y的和截为w位 由此推得检测无符号加法是否溢出得方法是判断结果是否比x&#xff0c;y中的任何一个小。 无符号数的逆元定义为使得的y&am…...

【阅读笔记】基于图像灰度梯度最大值累加的清晰度评价算子

本文介绍的是一种新的清晰度评价算子&#xff0c;基于图像灰度梯度最大值累加 一、概述 目前在数字图像清晰度评价函数中常用的评价函数包括三类&#xff1a;灰度梯度评价函数、频域函数和统计学函数&#xff0c;其中灰度梯度评价函数具有计算简单&#xff0c;评价效果好等优…...

Docker 系列之 docker-compose 容器编排详解

文章目录 前言一、Docker-compose简介二、Docker-compose 的安装三、Docker-compose卸载四、Docker-compose常用命令4.1 Docker-compose命令格式4.2 docker-compose up4.3 docker-compose ps4.4 docker-compose stop4.5 docker-compose -h4.6 docker-compose down4.7 docker-co…...

C++资料

InterviewGuide 首页 - 八股精 Releases halfrost/LeetCode-Go GitHub GitHub - GrindGold/CppGuide: 「C/C学习面试指南」一份涵盖大部分 C 程序员所需要掌握的知识。入门、进阶、深入、校招、社招&#xff0c;准备 C 学习& 面试&#xff0c;首选 CppGuide&#xff0…...

7-Zip Mark-of-the-Web绕过漏洞复现(CVE-2025-0411)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...

将本地项目上传到 GitLab/GitHub

以下是将本地项目上传到 GitLab 的完整步骤&#xff0c;从创建仓库到推送代码的详细流程&#xff1a; 1. 在 GitLab 上创建新项目 登录 GitLab&#xff0c;点击 New project。选择 Create blank project。填写项目信息&#xff1a; Project name: 项目名称&#xff08;如 my-p…...

基于SpringBoot+WebSocket的前后端连接,并接入文心一言大模型API

前言&#xff1a; 本片博客只讲述了操作的大致流程&#xff0c;具体实现步骤并不标准&#xff0c;请以参考为准。 本文前提&#xff1a;熟悉使用webSocket 如果大家还不了解什么是WebSocket&#xff0c;可以参考我的这篇博客&#xff1a; rWebSocket 详解&#xff1a;全双工…...

2.2.3 代码格式与风格指南

编写清晰、规范的代码是提高代码可读性、可维护性和团队协作效率的关键。虽然好多人说工控行业都是一帮电工&#xff0c;没有什么素质&#xff0c;这完全是误解&#xff0c;任何程序所在的行业&#xff0c;都需要个人保证其代码风格能够很好与团队进行协作&#xff0c;在过去一…...

数仓的数据加工过程-ETL

ETL代表Extract Transform和Load。ETL将所有三个数据库功能组合到一个工具中&#xff0c;以从一个数据库获取数据并将其放入另一个数据库。 提取&#xff1a;提取是从数据库中提取(读取)信息的过程。在此阶段&#xff0c;从多个或不同类型的来源收集数据。 转换&#xff1a;转…...

类与对象(中)

类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下 6 个默认成员函数。默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器会生…...

FastExcel的使用

前言 FastExcel 是一款基于 Java 的开源库&#xff0c;旨在提供快速、简洁且能解决大文件内存溢出问题的 Excel 处理工具。它兼容 EasyExcel&#xff0c;提供性能优化、bug 修复&#xff0c;并新增了如读取指定行数和将 Excel 转换为 PDF 的功能。 FastExcel 的主要功能 高性…...

微信小程序1.3 开发工具的使用2

内容提要 1.1 编辑器区域 1.2 调试器区域 1.3 工具栏区域 1.4 云开发 1.5 常用快捷键 1.1 编辑器区域 1.2 调试器区域 1.3 工具栏区域 1.4 云开发 1.5 常用快捷键...

pytest自动化测试 - pytest夹具的基本概念

<< 返回目录 1 pytest自动化测试 - pytest夹具的基本概念 夹具可以为测试用例提供资源(测试数据)、执行预置条件、执行后置条件&#xff0c;夹具可以是函数、类或模块&#xff0c;使用pytest.fixture装饰器进行标记。 1.1 夹具的作用范围 夹具的作用范围&#xff1a; …...

个人网站搭建

搭建 LNMP环境搭建&#xff1a; LNMP环境指&#xff1a;Linux Nginx MySQL/MariaDB PHP&#xff0c;在debian上安装整体需要300MB的磁盘空间。MariaDB 是 MySQL 的一个分支&#xff0c;由 MySQL 的原开发者维护&#xff0c;通常在性能和优化上有所改进。由于其轻量化和与M…...

doris:Insert Into Values

INSERT INTO VALUES 语句支持将 SQL 中的值导入到 Doris 的表中。INSERT INTO VALUES 是一个同步导入方式&#xff0c;执行导入后返回导入结果。可以通过请求的返回判断导入是否成功。INSERT INTO VALUES 可以保证导入任务的原子性&#xff0c;要么全部导入成功&#xff0c;要么…...

Linux 环境变量

目录 一、环境变量的基本概念 1.常见环境变量 2.查看环境变量方法 ​3.几个环境变量 环境变量&#xff1a;PATH 环境变量&#xff1a;HOME 环境变量&#xff1a;SHELL 二、和环境变量相关的命令 三、库函数getenv&#xff0c;setenv 四、环境变量和本地变量 五、命令行…...

人工智能在数字化转型中的角色:从数据分析到智能决策

引言 在数字化转型浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;正迅速崛起&#xff0c;成为推动企业创新和变革的关键力量。面对日益复杂的市场环境和激烈的行业竞争&#xff0c;企业亟需借助技术手段提高运营效率、优化决策过程&#xff0c;并增强市场竞争力。而AI…...

Spring Boot 自动配置

目录 什么是自动配置&#xff1f; Spring 加载 Bean ComponentScan Import 导入类 导入 ImportSelector 接口的实现类 SpringBoot 原理分析 EnableAutoConfiguration Import(AutoConfigurationImportSelector.class) AutoConfigurationPackage SpringBoot 自动配置流…...

PyQt6医疗多模态大语言模型(MLLM)实用系统框架构建初探(下.代码部分)

医疗 MLLM 框架编程实现 本医疗 MLLM 框架结合 Python 与 PyQt6 构建,旨在实现多模态医疗数据融合分析并提供可视化界面。下面从数据预处理、模型构建与训练、可视化界面开发、模型 - 界面通信与部署这几个关键部分详细介绍编程实现。 6.1 数据预处理 在医疗 MLLM 框架中,多…...

【LC】1148. 文章浏览 I

题目描述&#xff1a; Views 表&#xff1a; ------------------------ | Column Name | Type | ------------------------ | article_id | int | | author_id | int | | viewer_id | int | | view_date | date | ----------------------…...

Linux学习笔记——网络管理命令

一、网络基础知识 TCP/IP四层模型 以太网地址&#xff08;MAC地址&#xff09;&#xff1a; 段16进制数据 IP地址&#xff1a; 子网掩码&#xff1a; 二、接口管命令 ip命令&#xff1a;字符终端&#xff0c;立即生效&#xff0c;重启配置会丢失 nmcli命令&#xff1a;字符…...

Arduino大师练成手册 --控制 OLED

要在 Arduino 上使用 U8glib 库控制带有 7 个引脚的 SPI OLED 显示屏&#xff0c;你可以按照以下步骤进行&#xff1a; 7pin OLED硬件连接 GND&#xff1a;连接到 Arduino 的 GND 引脚。 VCC&#xff1a;连接到 Arduino 的 5V 引脚。 D0&#xff08;或 SCK/CLK&#xff09;…...

2024年终总结

距离放假还有一个小时&#xff0c;闲来无事&#xff0c;写篇总结。 最近关注我的朋友不少&#xff0c;关注我的多半都是因为几篇博客。既然关注了&#xff0c;我也想分享点工作中的经验给大家。 今年的节点是跳槽。 4月份跳槽的&#xff0c;跳槽之前呢在上家公司还有3W多奖金…...

Kafka 消费端反复 Rebalance: `Attempt to heartbeat failed since group is rebalancing`

文章目录 Kafka 消费端反复 Rebalance: Attempt to heartbeat failed since group is rebalancing1. Rebalance 过程概述2. 错误原因分析2.1 消费者组频繁加入或退出2.1.1 消费者故障导致频繁重启2.1.2. 消费者加入和退出导致的 Rebalance2.1.3 消费者心跳超时导致的 Rebalance…...

【Linux】Linux编译器-g++、gcc、动静态库

只要积极创造&#xff0c;机遇无时不有&#xff1b;只要善于探索&#xff0c;真理无处不在。&#x1f493;&#x1f493;&#x1f493; 目录 ✨说在前面 &#x1f34b;知识点一&#xff1a;Linux编译器-g、gcc •&#x1f330;1. 背景知识 •&#x1f330;2. gcc如何完成 •…...

android12源码中用第三方APK替换原生launcher

一、前言 如何用第三方的apk替换原生launcher呢&#xff1f;我是参考着这位大神的博客https://blog.csdn.net/hyu001/article/details/131044358做的&#xff0c;完美实现。 这边博客中又加入了我个人的一些改变&#xff0c;整理的。 二、步骤 1.在/packages/apps/MyApp文件…...

Ubuntu20.04 深度学习环境配置(持续完善)

文章目录 常用的一些命令安装 Anaconda创建conda虚拟环境查看虚拟环境大小 安装显卡驱动安装CUDA安装cuDNN官方仓库安装 cuDNN安装 cuDNN 库验证 cuDNN 安装确认 CUDA 和 cuDNN 是否匹配&#xff1a; TensorRT下载 TensorRT安装 TensorRT 本地仓库配置 GPG 签名密钥安装 Tensor…...

Java 实现Excel转HTML、或HTML转Excel

Excel是一种电子表格格式&#xff0c;广泛用于数据处理和分析&#xff0c;而HTM则是一种用于创建网页的标记语言。虽然两者在用途上存在差异&#xff0c;但有时我们需要将数据从一种格式转换为另一种格式&#xff0c;以便更好地利用和展示数据。本文将介绍如何通过 Java 实现 E…...

jQuery小游戏

jQuery小游戏&#xff08;一&#xff09; 嘻嘻&#xff0c;今天我们来写个jquery小游戏吧 首先&#xff0c;我们准备一下写小游戏需要准备的佩饰&#xff0c;如果&#xff1a;图片、音乐、搞怪的小表情 这里我准备了一些游戏中需要涉及到的图片 游戏中使用到的方法 eval() 函…...

Cpp::静态 动态的类型转换全解析(36)

文章目录 前言一、C语言中的类型转换二、为什么C会有四种类型转换&#xff1f;内置类型 -> 自定义类型自定义类型 -> 内置类型自定义类型 -> 自定义类型隐式类型转换的坑 三、C强制类型转换static_castreinterpret_castconst_castdynamic_cast 四、RTTI总结 前言 Hell…...

【PostgreSQL内核学习 —— (WindowAgg(一))】

WindowAgg 窗口函数介绍WindowAgg理论层面源码层面WindowObjectData 结构体WindowStatePerFuncData 结构体WindowStatePerAggData 结构体eval_windowaggregates 函数update_frameheadpos 函数 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#xff0c;我们尊…...

SQL-leetcode—1158. 市场分析 I

1158. 市场分析 I 表&#xff1a; Users ----------------------- | Column Name | Type | ----------------------- | user_id | int | | join_date | date | | favorite_brand | varchar | ----------------------- user_id 是此表主键&#xff08;具有唯一值的列&#xff…...