大数据Doris(九):Apache Doris 简单使用

news2024/12/22 20:43:20

文章目录

Apache Doris 简单使用

一、用户创建

二、创建数据库

三、账户赋权

四、创建数据表

1、创建数据表

2、准备数据

3、导入数据

五、查询数据表


Apache Doris 简单使用

下面按照官网给出的示例简单操作Doris,首先创建用户、创建数据库、赋权、创建表等,然后向表中加入数据,通过MySQL客户端进行数据的查询分析。

一、用户创建

Doris采用MySQL协议进行通信,可以通过MySQL client 或者 MySQL JDBC连接到 Doris 集群。Doris集群内置root用户,密码默认为空,root 用户默认拥有集群所有权限,例如:权限变更权限(Grant_priv )、节点变更权限(Node_priv ,包括 FE、BE、BROKER 节点的添加、删除、下线等操作)。

启动完 Doris 程序之后,可以通过 root 或 admin 用户(管理员)连接到 Doris 集群。 使用下面命令即可登录 Doris,登录后进入到Doris对应的Mysql命令行操作界面:

[root@node1 ~]# cd /software/mysql-5.7.22-client/bin/
[root@node1 bin]# ./mysql -u root -P 9030 -h127.0.0.1 -p123456

以上-h 可以指定任意一台FE节点的IP地址,-P是fe.conf中的query_port配置,默认为9030 ,其余参数同MySQL参数。

首次使用用户登录无需密码,可以通过以下命令来修改密码,之前已经操作过,这里不再操作:

mysql> SET PASSWORD FOR 'root' = PASSWORD('your_password');
Query OK, 0 rows affected (0.00 sec)

your_password是为root用户设置的新密码,可以随意设置,建议设置为强密码增加安全性,下次登录就用新密码登录。

我们可以通过下面的命令创建一个普通用户test:

mysql> CREATE USER 'test' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.02 sec)

创建用户完成后,下次登录Doris就可以使用新用户登录:"mysql -h FE_HOST -P9030 -utest -ptest_passwd",新创建的普通用户默认没有任何权限,需要给用户进行数据库赋权才可使用。

二、创建数据库

初始可以通过 root 或 admin 用户创建数据库,命令如下:

mysql> create database example_db;
Query OK, 0 rows affected (0.02 sec)

在Doris中,所有命令都可以使用 HELP command; 查看到详细的语法帮助,help 命令可以列举非常全的参考信息,非常方便。如果不清楚命令的全名,可以使用 "help 命令某一字段" 进行模糊查询。如键入 'HELP CREATE',可以匹配到 CREATE DATABASE, CREATE TABLE, CREATE USER 等命令。如下:

mysql> help create;
Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following
topics:
   CREATE CATALOG
   CREATE DATABASE
   CREATE ENCRYPTKEY
   CREATE EXTERNAL TABLE
   CREATE FILE
   CREATE FUNCTION
   CREATE INDEX
   CREATE MATERIALIZED VIEW
   CREATE POLICY
   CREATE REPOSITORY

mysql> help create database;
Name: 'CREATE DATABASE'
Description:

该语句用于新建数据库(database)

语法:

CREATE DATABASE [IF NOT EXISTS] db_name
    [PROPERTIES ("key"="value", ...)];

mysql> help create user;
Name: 'CREATE USER'
Description:

CREATE USER 命令用于创建一个 Doris 用户。

```sql
CREATE USER [IF EXISTS] user_identity [IDENTIFIED BY 'password']
[DEFAULT ROLE 'role_name']
[password_policy]
... ...

通过以下命令查看创建的数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| example_db         |
| information_schema |
+--------------------+
2 rows in set (0.00 sec)

information_schema数据库是为了兼容MySQL协议而存在,实际中信息可能不是很准确,所以关于具体数据库的信息建议通过直接查询相应数据库而获得。

三、账户赋权

example_db 创建完成之后,可以通过 root/admin 账户使用GRANT命令将 example_db 读写权限授权给普通账户,如 test。授权之后采用 test 账户登录就可以操作 example_db 数据库了。

#给test用户进行数据库访问授权
mysql> GRANT ALL ON example_db TO test;
Query OK, 0 rows affected (0.08 sec)

退出root用户登录的mysql客户端,使用test登录
mysql> exit
[root@node1 bin]# ./mysql -u test -P 9030 -h127.0.0.1 -p123456
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| example_db         |
| information_schema |
+--------------------+
2 rows in set (0.03 sec)

可以看到普通用户test拥有操作example_db的权限,如果不进行赋权查看不到对应的数据库。

四、创建数据表

1、创建数据表

按照如下命令创建表:

mysql> use example_db;
Database changed

#创建 example_db.example_tbl 表
CREATE TABLE IF NOT EXISTS example_db.example_tbl
(
    `user_id` LARGEINT NOT NULL COMMENT "用户id",
    `date` DATE NOT NULL COMMENT "数据灌入日期时间",
    `city` VARCHAR(20) COMMENT "用户所在城市",
    `age` SMALLINT COMMENT "用户年龄",
    `sex` TINYINT COMMENT "用户性别",
    `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间",
    `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费",
    `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间",
    `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间"
)
AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
PROPERTIES (
    "replication_allocation" = "tag.location.default: 1"
);

mysql> show tables;
+----------------------+
| Tables_in_example_db |
+----------------------+
| example_tbl          |
+----------------------+
1 row in set (0.01 sec)

注意:通过以上建表语句,认识下Doris中建表的格式。

2、准备数据

在node1节点/root/data目录下准备test.csv,数据内容如下:

[root@node1 ~]# mkdir data
[root@node1 ~]# cd data && vim test.csv
10000,2017-10-01,北京,20,0,2017-10-01 06:00:00,20,10,10
10000,2017-10-01,北京,20,0,2017-10-01 07:00:00,15,2,2
10001,2017-10-01,北京,30,1,2017-10-01 17:05:45,2,22,22
10002,2017-10-02,上海,20,1,2017-10-02 12:59:12,200,5,5
10003,2017-10-02,广州,32,0,2017-10-02 11:20:00,30,11,11
10004,2017-10-01,深圳,35,0,2017-10-01 10:00:15,100,3,3
10004,2017-10-03,深圳,35,0,2017-10-03 10:20:22,11,6,6

3、导入数据

这里我们通过Stream load 方式将上面保存到文件中的数据导入到我们刚才创建的表里,命令如下:

#进入到/root/data目录
[root@node1 ~]# cd /root/data/

#加载数据
[root@node1 data]# curl  --location-trusted -u test:123456 -T test.csv -H "column_separator:," http://127.0.0.1:8030/api/example_db/example_tbl/_stream_load

以上命令参数解释如下:

  • -T test.csv : 这里使我们刚才保存的数据文件,如果路径不一样,请指定完整路径。
  • -u root : 123456这里是用户名密码,我们使用默认用户root,密码默认为空。
  • 127.0.0.1:8030 : 分别是 fe 的 ip 和 http_port。

执行成功之后我们可以看到下面返回的信息:

{
    "TxnId": 2003,
    "Label": "b9c4fc8f-7a66-41ca-9bab-22ec391ede38",
    "TwoPhaseCommit": "false",
    "Status": "Success",
    "Message": "OK",
    "NumberTotalRows": 7,
    "NumberLoadedRows": 7,
    "NumberFilteredRows": 0,
    "NumberUnselectedRows": 0,
    "LoadBytes": 399,
    "LoadTimeMs": 779,
    "BeginTxnTimeMs": 53,
    "StreamLoadPutTimeMs": 488,
    "ReadDataTimeMs": 0,
    "WriteDataTimeMs": 145,
    "CommitAndPublishTimeMs": 88
}
  • NumberLoadedRows: 表示已经导入的数据记录数
  • NumberTotalRows: 表示要导入的总数据量
  • Status :Success 表示导入成功

到这里我们已经完成的数据导入,下面就可以根据我们自己的需求对数据进行查询分析了

五、查询数据表

上面完成了建表,输数据导入,下面我们就可以体验 Doris 的数据快速查询分析能力。

mysql> select * from example_tbl;
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
| user_id | date | city | age | sex | last_visit_date | cost | max_dwell_time | min_dwell_time |
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
| 10000 | 2017-10-01 | 北京 | 20 | 0 | 2017-10-01 07:00:00 | 35 | 10 | 2 |
| 10001 | 2017-10-01 | 北京 | 30 | 1 | 2017-10-01 17:05:45 | 2 | 22 | 22 |
| 10002 | 2017-10-02 | 上海 | 20 | 1 | 2017-10-02 12:59:12 | 200 | 5 | 5 |
| 10003 | 2017-10-02 | 广州 | 32 | 0 | 2017-10-02 11:20:00 | 30 | 11 | 11 |
| 10004 | 2017-10-01 | 深圳 | 35 | 0 | 2017-10-01 10:00:15 | 100 | 3 | 3 |
| 10004 | 2017-10-03 | 深圳 | 35 | 0 | 2017-10-03 10:20:22 | 11 | 6 | 6 |
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
6 rows in set (0.02 sec)

mysql> select * from example_tbl where city='上海';
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
| user_id | date | city | age | sex | last_visit_date | cost | max_dwell_time | min_dwell_time |
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
| 10002 | 2017-10-02 | 上海 | 20 | 1 | 2017-10-02 12:59:12 | 200 | 5 | 5 |
+---------+------------+--------+------+------+---------------------+------+----------------+----------------+
1 row in set (0.05 sec)

mysql> select city, sum(cost) as total_cost from example_tbl group by city;
+--------+------------+
| city | total_cost |
+--------+------------+
| 广州 | 30 |
| 上海 | 200 |
| 北京 | 37 |
| 深圳 | 111 |
+--------+------------+
4 rows in set (0.05 sec)

  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

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

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

相关文章

第二弹进阶吴恩达 ChatGPT Prompt 技巧

第一弹笔记在这里&#xff1a; 总结吴恩达 ChatGPT Prompt 免费课程 今天分享第二弹&#xff0c;进阶篇。 第一点&#xff0c;任务序列化。 通常看完一篇长文&#xff0c;脑子里往往充满无数疑问。急切想知道所有答案&#xff0c;必须列一个问题清单。对话式问法&#xff0c;对…

ChatGPT:数字时代革新与展望

ChatGPT&#xff1a;数字时代革新与展望 AGI 未来的愿景&#xff1a;建安全有益的 AGI OpenAI团队对AGI的展望&#xff1a; 我们希望 AGI 能够赋予人类在宇宙中最大程度地繁荣发展的能力。我们不期望未来是一个不合格的乌托邦&#xff0c;但我们希望将好的最大化&#xff0c;将…

vue使用路由的query配置项时如何清除地址栏的参数

写vue项目时&#xff0c;如果想通过路由的query配置项把参数从一个组件传到另一个组件&#xff0c;但是又不希望?idxxx显示在地址栏&#xff08;如&#xff1a;http://localhost:8080/test?idxxx的?idxxx&#xff09;&#xff0c;该怎么做&#xff1a; 举一个案例&#xff1…

【Python】【进阶篇】18、Django初始化项目环境精讲

目录 18、Django初始化项目环境精讲1. 完成数据库迁移2. PyMySQL模块的使用3. migrate与makemigrations命令详解1) makegrations生成数据库迁移文件2) migrate执行数据库迁移命令3) 完成数据库迁移总结 18、Django初始化项目环境精讲 上一节中&#xff0c;我们完成了对 settin…

软件工程导论 - 了解黑盒测试

前言 本篇介绍用例的基本要素&#xff0c;熟悉黑盒测试的7种设计测试用例的方法&#xff0c;了解等价类&#xff0c;边界值&#xff0c;判定表&#xff0c;正交表&#xff0c;场景设计&#xff0c;错误猜测法&#xff1b;如有错误&#xff0c;请在评论区指正&#xff0c;让我们…

使用docker部署prometheus最新版本2.43.0

环境准备&#xff1a; 192.168.197.136 安装prometheus 192.168.197.137 安装grafana 先把需要用到的镜像拉取下来 docker pull prom/prometheus 136服务器拉取 当前最新版本2.43.0 在部署prometheus之前先运行一个容器&#xff0c;把需要挂载的目录文件拷贝出来 docker…

[230501] 4月29日考试真题第一篇|Temporary Pools

题目来源&#xff1a;http://t.csdn.cn/goCDT 正确率&#xff1a;6/10 目录​​​​​​​ Temporary Pools 题目 Temporary Pools Paragraph 1: Temporary pools are freshwater habitats that retain water for only three to four months of the year or even shorter pe…

如何在CentOS上详细安装PageOffice进行企业文档管理和协作

PageOffice是一款针对企业文档管理和协作的办公软件&#xff0c;使用它可以轻松创建和编辑办公文档&#xff0c;并协作共享给其他用户。在CentOS上安装PageOffice可以提高企业的工作效率和文档管理水平。本文将详细介绍在CentOS上安装PageOffice的步骤和注意事项。 一、安装Ja…

【Unity-UGUI控件全面解析】| RawImage 显示纹理组件详解

🎬【Unity-UGUI控件全面解析】| RawImage 显示纹理组件详解一、组件介绍二、组件属性面板三、代码操作组件四、组件常用方法示例4.1 相机映射,可充当小地图4.2 播放视频💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN�…

LDAP概念和原理介绍

LDAP概念和原理介绍 相信对于许多的朋友来说&#xff0c;可能听说过LDAP&#xff0c;但是实际中对LDAP的了解和具体的原理可能还比较模糊&#xff0c;今天就从“什么是LDAP”、“LDAP的主要产品”、“LDAP的基本模型”、“LDAP的使用案例”四个方面来做一个介绍。 我们在开始…

c#笔记-变量

变量 在编写程序时&#xff0c;我们不能直接预测运行时所有的可能性。 例如在登录时的用户名和密码&#xff0c;有无数种组合。我们无法写出所有可能的值。 变量可以动态地表示一个值。 定义变量 使用var 标识符&#xff0c;并立刻赋值&#xff0c;可以声明一个变量。 var…

倾斜摄影三维模型OSGB格式转换OBJ格式的主要技术方法

倾斜摄影三维模型OSGB格式转换OBJ格式的主要技术方法 将倾斜摄影所获得的三维模型从OSGB格式转换为OBJ格式&#xff0c;可以实现更加灵活和便捷的数据应用和管理。主要技术方法如下&#xff1a; 1、使用转换工具 目前市面上有许多三维模型格式转换工具&#xff0c;比如K3DMak…

辨析 项目范围核查、WBS核查

项目范围核查、WBS核查辨析 项目范围核查 项目目标是否完善和准确指标是否可靠和有效约束和限制条件是否真实和符合实际重要假设前提是否合理风险是否可以接受成功把握是否很大范围定义是否能够保证上述目标的实现范围能够给出的效益是否高于成本范围定义是否需要进一步进行辅…

Python+vue企业员工高校学生体检服务预约系统PyCharm+django

开发语言&#xff1a;Python 框架&#xff1a;django Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm 功能介绍 通过软件的需求分析已经获得了系统的基本功能需求&#xff0c;根据需求&#xff0c…

五子棋游戏程序创作过程(C语言)

五子棋游戏程序创作过程&#xff08;C语言 &#xff09; 我是编程爱好者&#xff0c;对游戏程序编制很感兴趣。学习VB6语言时就编制过一些游戏程序&#xff0c;如独立钻石棋、伤脑筋十二块、连连看、扑克牌游戏等&#xff0c;都是windows标准图形界面的。感到很好玩&#xff0…

vue3+ts+vite自适应项目——路由、layout布局

系列文章目录 第一章&#xff1a;搭建项目 目录 系列文章目录 前言 一、vue-router 1.安装vue-router 2.引入 2.1 新建页面 2.2 公共样式引入 2.3 layout 布局 2.4路由配置 总结 前言 上一章我们搭建了项目&#xff0c;这一张主要讲路由和layout布局&#xff0c;和…

go环境安装

Go 是一个开源的编程语言&#xff0c;它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发&#xff0c;后来还加入了Ian Lance Taylor, Russ Cox等人&#xff0c;并最终于2009年11月开源&#xff0c;在2012年早些时…

ArduPilot之GPS Glitch问题M8N模块配置

ArduPilot之GPS Glitch问题&M8N模块配置 1. 源由2. 现象3. 视频分析3.1 配置&#xff08;不理想&#xff09;3.2 配置优化3.3 优化配置短时间3D LockGlitch3.4 优化配置长时间3D DGPS Lock3.5 使用尽量多的卫星系统3.5.1 配置一3.5.2 配置二 4. 总结4.1 解锁卫星数4.2 自动…

项目风险管理

风险的分类(按照性质划分) 纯粹风险:只有损失可能性而无获利可能性的风险。投机风险:相对于纯粹风险而言,指既有损失的可能又有获利机会的风险。风险既是一个危险也是一个机会 一、规划风险管理 决定如何进行规划和实施项目风险管理活动 二、风险识别 判断哪些风险会…

单列文本数据快速导入表格

文本数据导入Excel似乎是个老生常谈&#xff0c;方法也有很多&#xff0c;例如 使用文本编辑器打开文本文件&#xff0c;拷贝粘贴到Excel然后分类Power Query中的【从文本/CSV】如下图所示。 但是这个需求略有不同&#xff0c;文本数据为单列&#xff0c;每7行数据为一组&am…