Apache Doris 快速入门

1. 基本概念

  • FE,Frontend,前端节点,接收用户查询请求,SQL解析,执行计划生成,元数据管理,节点管理等

  • BE,Backend,后端节点,数据存储,执行查询计划。

    前端节点FE 和 后端节点BE 各自独立运行,互不影响。

  • broker:用来和外部文件系统打交道

2. 修改配置

DORIS_HOME=/export/server/doris-1.2.4.1

node1:安装doris的机器名

配置文件修改参数
$DORIS_HOME/fe/conf/fe.conf

priority_networks = node1/24

meta_dir = DORIS_HOME/fe/doris-meta

$DORIS_HOME/be/conf/be.conf

priority_networks = node1/24

storage_root_path = DORIS_HOME/be/storage1,10;DORIS_HOME/be/storage2

$DORIS_HOME//extensions/apache_hdfs_broker

/conf/apache_hdfs_broker.conf

3. 启动脚本

启动脚本运行进程
$DORIS_HOME/fe/bin/start_fe.sh --daemonPaloFe

ulimit -n 60000

sysctl -w vm.max_map_count=2000000

$DORIS_HOME/be/bin/start_be.sh --daemon

ps -ef | grep be  
$DORIS_HOME//extensions/apache_hdfs_broker/bin/start_broker.sh --daemonBrokerBootstrap

4. 停止脚本

$DORIS_HOME/fe/bin/stop_fe.sh
$DORIS_HOME/be/bin/stop_be.sh 
$DORIS_HOME//extensions/apache_hdfs_broker/bin/stop_broker.sh 

5. Doris端口

常用端口

webui: node1:8030

FE上的MySQL Server端口: 9030

6. MySQL客户端连接Doris

mysql -uroot -P9030 -hnode1

-u 此处使用的root用户是doris内置的默认用户,也是超级管理员用户

-P:这是我们连接到Doris的查询端口,默认端口是9030,对应于fe.conf中的query_port

-h:这是我们连接的FE的IP地址,如果你的客户端和FE安装在同一个节点上,可以使用127.0.0.1

查看FE、BE、Broker运行状态

show frontends\G;
show backends\G;
show broker\G;

扩缩容

#1.扩容
#1.1添加前端
ALTER SYSTEM ADD FRONTEND "192.168.0.1:9050";
#1.2添加后端
ALTER SYSTEM ADD BACKEND "192.168.0.1:9050";#2.缩容
#1.1剔除前端
ALTER SYSTEM DROP FRONTEND "host1:port", "host2:port";
#1.2剔除后端
ALTER SYSTEM DROP BACKEND "host1:port", "host2:port";

清屏: CTRL + L

7. 创建表

建表

修改分区

mysql> ALTER TABLE demo.example_tb1 ADD PARTITION IF NOT EXISTS `p202005` VALUES LESS THAN ("2020-06-01");
Query OK, 0 rows affected (0.54 sec)mysql> ALTER TABLE demo.example_list_tb2 ADD PARTITION IF NOT EXISTS p_uk VALUES IN ("London");
Query OK, 0 rows affected (0.25 sec)mysql> ALTER TABLE demo.example_tb1 DROP PARTITION IF EXISTS p202005;
Query OK, 0 rows affected (0.09 sec)mysql> ALTER TABLE demo.example_list_tb2 DROP PARTITION IF EXISTS p_uk;
Query OK, 0 rows affected (0.03 sec)

分区可以省略,如果省略的话,默认Doris系统会创建一个分区,这个分区成为单分区,它的分区名字和表名一样。这种很常用。

数据模型

Aggregate Key,相同的key,value会做聚合操作。按照给定的聚合函数 (sum、max、min、replace) 进行聚合。

Unique Key,保证key列的唯一性。只要key相同,新的值会覆盖旧的值。

Duplicate Key,运行数据冗余存储,保留数据原始的样子,不会对数据做任何操作。

建表时,可以省略,默认是冗余模型。

8. 数据操作

数据导入

数据导出

数据删除

数据修改

9. Rollup 和 物化视图

Doris建表默认是有顺序的,这个顺序就是字段的顺序,可以认为这就是它默认的聚合索引。若根据某字段过滤数据,根据索引最左匹配原则,有可能索引失效,导致全表扫描。

rollup可以调整字段顺序,使字段顺序尽可能匹配过滤字段,以此增加前缀索引的匹配度,提升查询效率。

查看表的Rollup:

desc table_name all;

创建Rollup:

alter table table_name add rollup rollup_name (field1,field2...);
#1.创建rollup
mysql> alter table example_site_visit add rollup rollup_cost_userid(user_id,cost);#2.再创建rollup
mysql>alter table example_site_visit add rollup rollup_cost_userid2(age,date,city,user_id,sex,last_visit_date,cost,max_dwell_time,min_dwell_time);mysql> desc example_site_visit all;
+---------------------+---------------+-----------------+-------------+--------------+------+-------+---------------------+---------+---------+
| IndexName           | IndexKeysType | Field           | Type        | InternalType | Null | Key   | Default             | Extra   | Visible |
+---------------------+---------------+-----------------+-------------+--------------+------+-------+---------------------+---------+---------+
| example_site_visit  | AGG_KEYS      | user_id         | LARGEINT    | LARGEINT     | No   | true  | NULL                |         | true    |
|                     |               | date            | DATE        | DATE         | No   | true  | NULL                |         | true    |
|                     |               | city            | VARCHAR(20) | VARCHAR(20)  | Yes  | true  | NULL                |         | true    |
|                     |               | age             | SMALLINT    | SMALLINT     | Yes  | true  | NULL                |         | true    |
|                     |               | sex             | TINYINT     | TINYINT      | Yes  | true  | NULL                |         | true    |
|                     |               | last_visit_date | DATETIME    | DATETIME     | Yes  | false | 1970-01-01 00:00:00 | REPLACE | true    |
|                     |               | cost            | BIGINT      | BIGINT       | Yes  | false | 0                   | SUM     | true    |
|                     |               | max_dwell_time  | INT         | INT          | Yes  | false | 0                   | MAX     | true    |
|                     |               | min_dwell_time  | INT         | INT          | Yes  | false | 99999               | MIN     | true    |
|                     |               |                 |             |              |      |       |                     |         |         |
| rollup_cost_userid  | AGG_KEYS      | user_id         | LARGEINT    | LARGEINT     | No   | true  | NULL                |         | true    |
|                     |               | cost            | BIGINT      | BIGINT       | Yes  | false | 0                   | SUM     | true    |
|                     |               |                 |             |              |      |       |                     |         |         |
| rollup_cost_userid2 | AGG_KEYS      | age             | SMALLINT    | SMALLINT     | Yes  | true  | NULL                |         | true    |
|                     |               | date            | DATE        | DATE         | No   | true  | NULL                |         | true    |
|                     |               | city            | VARCHAR(20) | VARCHAR(20)  | Yes  | true  | NULL                |         | true    |
|                     |               | user_id         | LARGEINT    | LARGEINT     | No   | true  | NULL                |         | true    |
|                     |               | sex             | TINYINT     | TINYINT      | Yes  | true  | NULL                |         | true    |
|                     |               | last_visit_date | DATETIME    | DATETIME     | Yes  | false | 1970-01-01 00:00:00 | REPLACE | true    |
|                     |               | cost            | BIGINT      | BIGINT       | Yes  | false | 0                   | SUM     | true    |
|                     |               | max_dwell_time  | INT         | INT          | Yes  | false | 0                   | MAX     | true    |
|                     |               | min_dwell_time  | INT         | INT          | Yes  | false | 99999               | MIN     | true    |
+---------------------+---------------+-----------------+-------------+--------------+------+-------+---------------------+---------+---------+
22 rows in set (0.01 sec)

物化视图

Doris的物化视图,本质上也是一个rollup,只是语法不一样。

mysql> CREATE MATERIALIZED VIEW example_site_visit_mv AS-> SELECT user_id,city,SUM(cost)-> FROM example_site_visit-> GROUP BY user_id,city;
Query OK, 0 rows affected (0.20 sec)mysql> desc example_site_visit all

10. 内置函数

语法:show builtin functions in database_name;

使用:show builtin functions in demo;

使用方式: help + 函数名;

请点击查看更多函数,查看左侧导航树

11. 动态分区

开启动态分区

#1.开启动态分区,root用户未设置密码,所以为空
curl --location-trusted -u root: -XGET http://node1:8030/api/_set_config?dynamic_partition_enable=true#2.设置动态分区的检测时间间隔,root用户未设置密码,所以为空
curl --location-trusted -u root: -XGET http://node1:8030/api/_set_config?dynamic_partition_check_interval_seconds=5

动态分区语法

PARTITION BY RANGE('分区字段')()

动态分区不支持list分区

创建动态分区表

-- 创建分区
CREATE TABLE order_dynamic_partition
(id int,time date,money double,areaName varchar(50)
)
duplicate key(id,time)
PARTITION BY RANGE(time)()
DISTRIBUTED BY HASH(id) buckets 10
PROPERTIES("dynamic_partition.enable" = "true","dynamic_partition.time_unit" = "DAY", --四种动态分区类型:HOUR,DAY,WEEK,MONTH"dynamic_partition.start" = "-7", -- 保留到7天前的分区"dynamic_partition.end" = "3", --也创建后3天的分区"dynamic_partition.prefix" = "p", --分区名称前缀"dynamic_partition.buckets" = "10", "replication_num" = "1"
);-- 查看分区
show partitions from order_dynamic_partition;

查看动态分区表

show dynamic partition tables;

动态分区表  与  静态分区表 的转换开关

"dynamic_partition.enable" = "true"

true为开启动态分区,false为普通分区

-- 创建静态分区表
CREATE TABLE table_partition
(id int,time date,money double,areaName varchar(50)
)
duplicate key(id,time)
PARTITION BY RANGE(time)
(PARTITION `p202001` VALUES LESS THAN ("2020-02-01"),PARTITION `p202002` VALUES LESS THAN ("2020-03-01"),PARTITION `p202003` VALUES LESS THAN ("2020-04-01")
)
DISTRIBUTED BY HASH(id) buckets 10
PROPERTIES
("dynamic_partition.enable" = "false","dynamic_partition.time_unit" = "DAY","dynamic_partition.prefix" = "p","dynamic_partition.end" = "3","dynamic_partition.buckets" = "10","replication_num" = "1"
);-- 静态分区表转换为动态分区表
ALTER TABLE table_partition set ("dynamic_partition.enable" = "true");
-- 动态分区表转换为静态分区表
ALTER TABLE table_partition set ("dynamic_partition.enable" = "false");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/140477.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

[npm]脚手架本地全局安装1

[npm]脚手架本地全局安装1 npm link 全局安装npm install 全局安装卸载全局安装的脚手架 该文章是你的脚手架已经开发完成的前提下,你想要本地全局安装该脚手架,便于本地使用脚手架的命令的情况 npm link 全局安装 如果本地开发的项目是个脚手架&#…

Redis学习笔记--002

Redis的JAVA客户端 文章目录 Redis的JAVA客户端一、Redis的Java客户端的种类二、Jedis2.1、使用步骤2.2、Jedis连接池 三、[SpringDataRedis](https://spring.io/projects/spring-data-redis)3.1、介绍3.2、RedisTemplate3.3、SpringDataRedis使用步骤3.4、SpringDataRedis的序…

10.1网站编写(Tomcat和servlet基础)

一.Tomcat: 1.Tomcat是java写的,运行时需要依赖jre,所以要装jdk. 2.建议配置好环境变量. 3.默认端口号8080(业务端口)可能会被占用,建议改一下(本人改成了9999). 4.另一个默认端口是8005(管理端口). 二Servlet基础(编写一个hello world代码): 整体分为7个步骤,分别是创建…

linux安装mysql8.0

最近在云服务器上部署服务,需要在linux端安装mysql8以上的版本,出现一些问题,记录一下。 1.首先卸载以前mysql版本。 (1)停止mysql服务。 systemctl stop mysqld.service (2)删除对应程序与文件。 查看安装…

什么是机器学习?

所谓的机器学习就是让机器去学习, 在这里关键词是学习两个字 在我们传统的学习算法的过程中, 我们真正要做的事情其实是让机器去执行,也就是说设计一个算法, 去让机器具体的完成一个任务,而不是学习一个任务 最早的机器…

JumpServer开源堡垒机与爱可生云树数据库完成兼容性认证

近日,中国领先的开源软件提供商FIT2CLOUD飞致云宣布,JumpServer开源堡垒机已经完成与爱可生云树数据库软件的兼容性认证。经过双方联合测试,云树数据库软件(简称:ActionDB)V1.0与杭州飞致云信息科技有限公司…

雷达编程实战之静态杂波滤除与到达角估计

雷达中经过混频的中频信号常常混有直流分量等一系列硬件设计引入的固定频率杂波,我们称之位静态杂波,雷达信号处理需要把这些静态杂波滤除从而有效的提高信噪比,实现准确的目标检测功能。 目标的到达角估计作为常规车载雷达信号处理的末端&am…

针对敏感数据的安全转录服务

即便在新冠肺炎疫情期间,继续保持了最高级别的机密性 新冠肺炎疫情带来的各种限制向所有服务提供商提出了挑战,促使提供商们想方设法采取更富想象力的新方法来满足客户的需求。澳鹏采用了一种由两种方案组成的工作机制,服务于客户机密材料的…

解决Spring Boot 2.7.16 在服务器显示启动成功无法访问问题:从本地到服务器的部署坑

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

【100天精通Python】Day69:Python可视化_实战:导航定位中预测轨迹和实际轨迹的3D动画,示例+代码

目录 1. 预测的3D轨迹和实际轨迹的动画图,同时动态更新 2 真值轨迹设置为静态的,预测轨迹不断更新 3 网格的三维坐标系有旋转运动,以此全方位展示预测轨迹和真值轨迹之间的空间关系 1. 预测的3D轨迹和实际轨迹的动画图,同时动态更…

【Phoenix】phoenix实现每个Primarykey主键保留N版本数据,CDC数据记录为Changelog格式

一、背景: CDC数据中包含了,数据的变更过程。当CDC写入传统数据库最终每一个primary key下会保存一条数据。当然可以使用特殊手段保存多分记录但是显然造成了数据膨胀。 另外数据湖Hudi(0.13.1)是不支持保存所有Changelog其Compaction机制会清除所有旧版…

【操作系统笔记一】程序运行机制CPU指令集

内存地址 指针 / 引用 指针、引用本质上就是内存地址,有了内存地址就可以操作对应的内存数据了。 不同的数据类型 字节序 大端序(Big Endian):字节顺序从低地址到高地址顺序存储的字节序小端序(Little Endian&#…

【MySQL】 MySQL索引事务

文章目录 🛫索引🎍索引的概念🌳索引的作用🎄索引的使用场景🍀索引的使用📌查看索引📌创建索引🌲删除索引 🌴索引保存的数据结构🎈B树🎈B树&#x…

10.5 串联型稳压电路(1)

稳压管稳压电路输出电流较小,输出电压不可调,不能满足很多场合下的应用。串联型稳压电路以稳压管稳压电路为基础,利用晶体管的电流放大作用,增大负载电流;在电路中引入深度电压负反馈使输出电压稳定;并且&a…

RabbitMQ快速入门——消费者

public class Consumer_HelloWorld {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost("172.16.98.133"); ip 默认值 localhostfac…

【论文写作】符号:矩阵、向量的乘法、内积、点积等

【论文写作】符号:矩阵、向量乘法、内积、点积等 文章目录 【论文写作】符号:矩阵、向量乘法、内积、点积等1. 矩阵乘法1.1 矩阵乘积1.2 矩阵哈德玛乘积1.3 矩阵克罗内克积 2. 向量乘法2.1 向量点积、内积2.2 向量Hadamard积2.3 向量外积2.4 向量叉积 1.…

预训练相关知识

1、上下文无关语义表示方式存在问题 语义不同的词具有相同的表示,(apple 电子产品苹果/水果苹果) 容易出现oov问题 2、神经语言编码器 2.1、序列模型 cnn/rnn等,捕获局部信息和序列依赖信息,无法捕获长距离依赖。易训…

罗德里格斯公式

1.点乘 A ⃗ ⋅ B ⃗ ∣ A ⃗ ∣ ∣ B ⃗ ∣ c o s ⟨ A ⃗ , B ⃗ ⟩ \vec{A} \cdot \vec{B} \left | \vec{A} \right | \left | \vec{B} \right | cos\left \langle \vec{A}, \vec{B} \right \rangle A ⋅B ​A ​ ​B ​cos⟨A ,B ⟩ 对应几何意义:向量 A ⃗…

STL-常用容器

string容器 string构造函数 string本质:类 string和char*区别: char* 是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。 特点: string类内部封装了很多成员方法 …

Android 12,调用系统库libft2.so 遇到的各种问题记录

问题前提,Android 12系统,vendor静态库中调用 libft2.so。(vendor静态库中调用libft2.so会简单点,没这么麻烦) 【问题1】 (native:vendor) can not link against libft2 (native:platform) 本地debug尝试修改: 为了本地环境debug调试方便,我找了个 mk文件,在里面添加了…