Apache Doris 快速入门

news2024/9/25 13:26:42

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

$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.coloradmin.cn/o/1026791.html

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

相关文章

什么是SVG(可缩放矢量图形)?它与普通图像格式有何不同?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是SVG?⭐ 与普通图像格式的不同⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚…

Docker部署jar包、数据库、中间件

centos7下载docker:https://blog.csdn.net/qq_39997939/article/details/131005939 1、编写dockerfile https://blog.csdn.net/liben0429/article/details/126858971 2、如何确定在dockerfile安装jdk11 https://www.5axxw.com/questions/content/mc5fpt 打包镜…

python使用websocket实现多端数据同步,多个websocket同步消息,断开链接自动清理

我使用的是flask_sock这个模块,我的使用场景是:可以让数据多端实时同步。在游戏控制后台和游戏选手的ipad上都可以实时调整角色的技能和点数什么的,所以需要这样的一个功能来实现数据实时同步。 下面是最小的demo案例: from fla…

【Docker-MyCat】分库分表中间件mycat安装使用(docker版)

分库分表中间件mycat安装使用(docker版) 1.创建Mycat文件夹2.创建Docker文件夹3.下载Mycat并解压4.编写Dockerfile文件5.打包镜像6.启动镜像7.连接测试 想使用mycat实现mysql分库分表功能,但是docker镜像里,几乎没有mycat&#xf…

IntelliJ IDEA - Maven 在控制台Maven编译正常,但是在IDEA中不正常,表现不一致

文章目录 现象原因解决验证 现象 一个Maven项目,当导入到IDEA后,无法在IDEA中正常的编译和下载jar依赖,类似下面的截图。 但是在Windows控制台却可以正常编译,类似下面的截图。 CMD执行:mvn clean install -Dmaven.te…

flink集群与资源@k8s源码分析-资源I 资源请求

1 资源 资源分析分3部分,资源请求,资源提供,声明式资源管理,本文是第一部分资源请求 2 场景 资源处理有声明式处理资源和细粒度处理资源 是两个实现,两者不是并行的两种实现策略,声明式是资源申请和分配方式,粒度是指资源分割方式,细粒度按需可变的资源,粗粒度是固定…

注入之mssql数据库(手工注入)

sa最高权限(可以获取系统权限) 打开一个mssql数据库 要拼接一个参数 拼接这个参数?xxser1 检查是否是mssql数据库 and exists (select * from%20sysobjects) 为真是属于mssql 查询当前数据库系统的用户名 and system_user0 (由于版本问题谷歌不可以)…

flink集群与资源@k8s源码分析-总述

1 简介 集群和资源模块提供动态资源能力,是分布式系统关键基础设施,分布式datax,分布式索引,事件引擎都需要集群和资源的弹性资源能力,提高伸缩性和作业处理能力。本文分析flink的集群和资源的k8s模块,深入了解其设计原理,为开发自有的集群和资源组件做技术准备, 同时涉…

【大数据】HDFS 的常用命令

HDFS 的常用命令 1.操作命令1.1 创建文件夹1.2 列出指定的文件和目录1.3 新建文件1.4 上传文件1.5 将本地文件移动到 HDFS1.6 下载文件1.7 查看文件1.8 追写文件1.9 删除目录或者文件1.10 显示占用的磁盘空间大小1.11 HDFS 中的文件复制1.12 HDFS 中的文件移动 2.管理命令2.1 报…

什么是虚拟DOM(Virtual DOM)?它在前端框架中的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是虚拟DOM(Virtual DOM)?⭐ 虚拟DOM 在前端框架中的作用⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦&…

设计模式_解释器模式

解释器模式 案例 角色 1 解释器基类 (BaseInterpreter) 2 具体解释器1 2 3... (Interperter 1 2 3 ) 3 内容 (Context) 4 用户 (user) 流程 (上下文) ---- 传…

Python与数据分析--Matplotlib-2

目录 1.写在文前 2.实例1--武汉新冠趋势图 3.简单散点图实例 4.灵活散点图实例 5.饼图操作实例 1.写在文前 """ Matplotlib库我们大致已经学完了,但是缺乏一定的实战经验。 今天我们就来进行一下matplotlib的实战操作。 """ #导…

OSI七层网络参考模型与数据流通过程

OSI七层网络参考模型 文章目录 OSI七层网络参考模型1. OSI参考模型初步了解2. OSI参考模型理解3. 数据流通的过程 1. OSI参考模型初步了解 OSI,英文为Open System Interconnect,意为开放式系统互连,国际化标准组织(ISO)指定了OSI模型&#x…

二叉树经典OJ题——【数据结构】

W...Y的主页 😊 代码仓库分享 💕 今天我们来进行二叉树的OJ练习,就是利用二叉树的前序、中序、后续以及晨序遍历的特性进行OJ训练。话不多说,来看我们的第一道题。 【leetcode 965.单值二叉树】 OJ链接 如果二叉树每个节点都具…

JavaScript基础知识12——运算符:算数运算符,比较运算符

哈喽,大家好,我是雷工。 以下为JavaScript基础知识学习笔记。 一、算数运算符 1、算术运算符:即进行数学计算的符号。 2、有哪些算数运算符: :加法 -:减法 *:乘法 /:除法 %:取余(…

湖南衡阳3D扫描在生物仿真研究的应用高精度三维扫描螃蟹-CASAIM中科广电

生物仿真研究与应用一直是科研及工艺品的热门方向,很多设计脱胎于生物本身,传统方式又大多只能以画师手绘为主,做到“纤毫毕现”极其困难,故而才有了“齐白石的虾”、“徐悲鸿的马”等出圈的艺术家的画作,对于某种生物…

云原生的简单理解

一、何谓云原生? 一种构建和运行应用软件的方法 应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性分布式优势。 二、包括以下四个要素 采用容器化部署:实现云平…

ASfP: 增强AOSP平台开发的利器——Android Studio for Platform

ASfP: 增强AOSP平台开发的利器——Android Studio for Platform Android Studio for Platform (ASfP) 是一个为使用 Soong 构建系统构建的 Android 开源项目(AOSP)平台开发者而设计的 Android Studio IDE 版本。与标准 Android Studio 不同,…

福建福州大型钢结构件3D扫描全尺寸三维测量平面度平行度检测-CASAIM中科广电

高精度三维扫描技术已经在大型工件制造领域发挥着重要作用,特别是在质量检测环节,高效、高精度,可以轻松实现全尺寸三维测量。本期,我们要分享的应用是在大型钢结构件的关键部位尺寸及形位公差检测。 钢结构件,是将多…

2023版 STM32实战1 LED灯驱动(电路与代码都讲解)

电路图 常规画法(带限流电阻计算公式) 设LED 电流为20mA(统一单位为 0.02A) 电压为3.3V 限流电阻(电源电压-负载正向工作电压)/工作电流 限流电阻(5V-3.3V)/0.02mA1.7/V0.02A85R 省事画法(直接用IO输出) 代码(直…