Doris系列之建表操作

这篇具有很好参考价值的文章主要介绍了Doris系列之建表操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Doris系列

注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
今天和大家分享一下Doris系列之建表操作
#博学谷IT学习技术支持#



前言

  1. Apache Doris是一个现代化的基于MPP(大规模并行处理)技术的分析型数据库产品。简单来说,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果(与Hadoop相似)。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。
  2. Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。令您的数据分析工作更加简单高效!

Doris系列之建表操作


一、Doris 建表-基本概念

Doris系列之建表操作

  1. 从表的角度来看数据结构,用户的一张 Table 会拆成多个 Tablet,Tablet 会存成多副本,存储在不同的 BE中,从而保证数据的高可用和高可靠。
  2. 数据主要都是存储在BE里面,BE节点上物理数据的可靠性通过多副本来实现,默认是3副本,副本数可配置且可随时动态调整,满足不同可用性级别的业务需求。FE调度BE上副本的分布与补齐。
  3. 如果说用户对可用性要求不高,而对资源的消耗比较敏感的话,我们可以在建表的时候选择建两副本或者一副本。
  4. Tablet & Partition
    1.在 Doris 的存储引擎中,用户数据被水平划分为若干个数据分片(Tablet,也称作数据分桶)。
    2.每个 Tablet 包含若干数据行。各个 Tablet 之间的数据没有交集,并且在物理上是独立存储的。
    3.多个 Tablet 在逻辑上归属于不同的分区(Partition)。一个 Tablet 只属于一个 Partition。而一个 Partition
    4.包含若干个 Tablet。因为 Tablet 在物理上是独立存储的,所以可以视为 Partition 在物理上也是独立。
    5.Tablet 是数据移动、复制等操作的最小物理存储单元。
    若干个 Partition 组成一个 Table。
    6.Partition 可以视为是逻辑上最小的管理单元。数据的导入与删除,都可以或仅能针对一个 Partition 进行。
    Doris系列之建表操作

二、使用步骤

1.Doris 建表-单分区多分桶SUM预聚合

CREATE TABLE table1
(
    siteid INT DEFAULT '10',
    citycode SMALLINT,
    username VARCHAR(32) DEFAULT '',
    pv BIGINT SUM DEFAULT '0'
)
AGGREGATE KEY(siteid, citycode, username)
DISTRIBUTED BY HASH(siteid) BUCKETS 10
PROPERTIES("replication_num" = "1");

insert into table1 values(1,1,'user1',10);
insert into table1 values(1,1,'user1',10);
insert into table1 values(1,2,'user1',10);
insert into table1 values(1,2,'user1',10);

Doris系列之建表操作

2.Doris 建表-单分区多分桶REPLACE预聚合

CREATE TABLE table1
(
    siteid INT DEFAULT '10',
    citycode SMALLINT,
    username VARCHAR(32) DEFAULT '',
    pv BIGINT REPLACE DEFAULT '0'
)
AGGREGATE KEY(siteid, citycode, username)
DISTRIBUTED BY HASH(siteid) BUCKETS 10
PROPERTIES("replication_num" = "1");

insert into table1 values(1,1,'user1',10);
insert into table1 values(1,1,'user1',20);
insert into table1 values(1,2,'user1',10);
insert into table1 values(1,2,'user1',30);

Doris系列之建表操作

3.Doris 建表-多分区多分桶SUM预聚合

以下场景推荐使用复合分区

  1. 有时间维度或类似带有有序值的维度,可以以这类维度列作为分区列。分区粒度可以根据导入频次、分区数据量等进行评估。
  2. 历史数据删除需求:如有删除历史数据的需求(比如仅保留最近N
    天的数据)。使用复合分区,可以通过删除历史分区来达到目的。也可以通过在指定分区内发送 DELETE 语句进行数据删除。
  3. 解决数据倾斜问题:每个分区可以单独指定分桶数量。如按天分区,当每天的数据量差异很大时,可以通过指定分区的分桶数,合理划分不同分区的数据,分桶列建议选择区分度大的列。
CREATE TABLE table2
(
    event_day DATE,
    siteid INT DEFAULT '10',
    citycode SMALLINT,
    username VARCHAR(32) DEFAULT '',
    pv BIGINT SUM DEFAULT '0'
)
AGGREGATE KEY(event_day, siteid, citycode, username)
PARTITION BY RANGE(event_day)
(
    PARTITION p202106 VALUES LESS THAN ('2021-07-01'),
    PARTITION p202107 VALUES LESS THAN ('2021-08-01'),
    PARTITION p202108 VALUES LESS THAN ('2021-09-01')
)
DISTRIBUTED BY HASH(siteid) BUCKETS 10
PROPERTIES("replication_num" = "3");

导入数据:
2021-06-03|9|1|jack|3
2021-06-10|10|2|rose|2
2021-07-03|11|1|jim|2
2021-07-05|12|1|grace|2
2021-07-12|13|2|tom|2
2021-08-15|14|3|bush|3
2021-08-12|15|3|helen|3

curl --location-trusted -u root:123456 -H “label:table2_20210707” -H “column_separator:|” -T table2_data http://node01:8030/api/test_db/table2/_stream_load

Doris系列之建表操作

4.Doris 建表-数据导入-Broker Load

Broker load是一个导入的异步方式,不同的数据源需要部署不同的 broker 进程。可以通过 show broker 命令查看已经部署的 broker。

  • 源数据在Broker可以访问的存储系统中,如HDFS
  • 数据量在几十到几百GB级别
  • 用户在递交导入任务后,FE(Doris系统的元数据和调度节点)会生成相应的PLAN(导入执行计划,BE会导入计划将输入导入Doris中)并根据BE(Doris系统的计算和存储节点)的个数和文件的大小,将PLAN分给多个BE执行,每个BE导入一部分数据。
  • BE在执行过程中会从Broker拉取数据,在对数据转换之后导入系统,所有BE均完成导入,由FE最终决定导入是否成功。

Doris系列之建表操作

# 创建表
CREATE TABLE test_db.user_result(
   id BIGINT,
   name VARCHAR(50),
   age INT,
   gender INT,
   province  VARCHAR(50),
   city   VARCHAR(50),
   region  VARCHAR(50),
   phone VARCHAR(50),
   birthday VARCHAR(50),
   hobby  VARCHAR(50),
   register_date VARCHAR(50)
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 10;

# 通过HDFS导入数据
LOAD LABEL  test_db.user_result
(
DATA INFILE("hdfs://node01:8020/datas/user.csv")
INTO TABLE `user_result`
COLUMNS TERMINATED BY ","
FORMAT AS "csv"
(id, name, age, gender, province,city,region,phone,birthday,hobby,register_date)
)
WITH BROKER broker_10_20_30
(
"dfs.nameservices" = "my_cluster",
"dfs.ha.namenodes.my_cluster" = "nn1,nn2,nn3",
"dfs.namenode.rpc-address.my_cluster.nn1" = "node01:8020",
"dfs.namenode.rpc-address.my_cluster.nn2" = "node02:8020",
"dfs.namenode.rpc-address.my_cluster.nn3" = "node03:8020",
"dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
)
PROPERTIES
(
    "max_filter_ratio"="0.00002"
 
);

Doris系列之建表操作


总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了Doris系列之建表操作,以后还会继续更新Doris的其他用法。文章来源地址https://www.toymoban.com/news/detail-406744.html

到了这里,关于Doris系列之建表操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Apache Doris 系列: 基础篇-Flink SQL写入Doris

    本文介绍 Flink SQL如何流式写入 Apache Doris,分为一下几个部分: Flink Doris connector Doris FE 节点配置 Flink SQL 写 Doris Flink Doris connector 本质是通过Stream Load来时实现数据的查询和写入功能。 支持二阶段提交,可实现Exatly Once的写入。 1)需在 apache-doris/fe/fe.conf 配置文件添加如下配置

    2023年04月08日
    浏览(36)
  • python系列之(大家圣诞快乐)圣诞树

    2022年圣诞节到来啦,很高兴这次我们又能一起度过~, 圣诞节源自古罗马人迎接新年的农神节,与基督教本无关系。在基督教盛行罗马帝国后,教廷将这种民俗节日纳入基督教体系,同时以庆祝耶稣的降生。但在圣诞节这天不是耶稣的生辰,因为《圣经》未记载耶稣具体出生

    2024年02月04日
    浏览(35)
  • 商城管理系统的数据表从属关系+navicat建表操作+数据库文件转储并入代码操作

    1,商城管理系统的数据表从属关系 在商城管理系统中,我们会面临属性分组的问题,商品表与分类表需要建立链接; 在控制类中我们将分类表中属性类传过来,与商品值params建立链接 在service类中,我们写入判断key的语句; 由此我们可以建立商品表与属性表之间的链接 2,

    2024年02月01日
    浏览(49)
  • 单链表——单链表的定义及基本操作(头插法尾插法建表、查找、插入、删除等)

    上一篇我们已经完成了顺序表的实现和基本操作元素的增加、删除和查找 (链接直达:线性表元素的基本操作(C语言)【数据结构】-CSDN博客) 我们知道顺序表支持随机访问,可以通过下标来直接访问,同时也可以进行排序等优点;但是仍存在局限性,对顺序表的中部进行增加

    2024年04月10日
    浏览(37)
  • Apache Doris 系列: 基础篇-单独更新一列

    数据表使用 Aggregate 聚合模型 需要更新的字段使用 REPLACE_IF_NOT_NULL 建表 插入数据 更新cost字段 注意: user_id , date , city , age , sex 这几个字段是聚合键,必须要指定 应用场景举例 在数仓构建大宽表的场景中, 当上游任一来源表产生延迟,均会造成大宽表延迟,进而导致

    2024年02月12日
    浏览(24)
  • Apache Doris 系列: 入门篇-数据导入及查询

    本文档主要介绍 Doris 的数据导入及数据查询。 Doris 为了满足不同业务场景的数据接入需求,提供不丰富的数据导入方式,去支持不同的数据源:外部存储(HDFS,对象存储)、本地文件、消息队列(Kafka)及其他外部业务系统数据库(MySQL、Oracle、SQLServer、PostgreSQL等),支持

    2023年04月09日
    浏览(40)
  • Apache Doris 系列:Bucket(分桶)数量设置建议

    问题描述: 上线运行一段时间后,随着越来越多的数据增长,集群每次重启后一周左右,读写就会开始变得越来越慢,直到无法正常进行读写。 问题处理: 对数仓表的 Schema 的分析,发现有些表数据并不大,但是 Bucket 却设置的非常大 通过 show data from table 命令列出所有表Bu

    2024年02月16日
    浏览(25)
  • Doris 入门:基本操作(三)

    创建用户 CREATE USER ‘test’ IDENTIFIED BY ‘123456’; 后续登录就可以直接使用命令登录 mysql -h 192.168.1.101 -P9030 -utest -p12345 创建数据库并赋予权限 初始可以通过 root 或 admin 用户创建数据库 create database test_db; 查看数据库 show databases; 授权 grant all on test_db to test; 注意 可以使用 help

    2024年02月09日
    浏览(26)
  • Flink读写Doris操作介绍

    ​ Flink Doris Connector 可以支持通过 Flink 操作(读取、插入、修改、删除) Doris 中存储的数据。可以将 Doris 表映射为 DataStream 或者 Table。 Flink操作Doris修改和删除只支持在 Unique Key 模型上 pom.xml加入依赖 创建测试库测试表 Doris 和 Flink 列类型映射关系 Doris Type Flink Type NULL_TYPE

    2024年02月12日
    浏览(32)
  • Apache Doris 聚合函数源码阅读与解析|源码解读系列

    笔者最近由于工作需要开始调研 Apache Doris,通过阅读聚合函数代码切入 Apache Doris 内核,同时也秉承着开源的精神,开发了 array_agg 函数并贡献给社区。笔者通过这篇文章记录下对源码的一些理解,同时也方便后面的新人更快速地上手源码开发。 聚合函数,顾名思义,即对一

    2024年01月25日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包