Doris动态表使用快速入门实战

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

Doris动态表使用快速入门实战

1. 动态表构功能概述

半结构化数据,是介于结构化和非结构化之间的数据。和普通纯文本相比,半结构化数据具有一定的结构性。和结构化数据相比,其结构变化复杂,我们又不能方便的使用结构化的方式去描述它。
半结构的数据中通常即包括数据本身,也包括数据结构的描述。比如场景的有JSON、XML,他们即包含数据,也包含数据的描述(元数据信息),具体半结构化特征如下:

  • 数据结构自描述:结构与数据相融合在一起,一条数据即包括“元数据”也包括“数据”。
  • 数据结构复:数据结构难以纳入现有的各种描述框架,实际应用中不易进行清晰的理解与把握。
  • 数据结构描述的动态性:数据变化通常会导致结构模式变化,整体上具有动态的结构模式。
    相对于结构化数据,半结构化数据的构成更为复杂和不确定,从而也具有更高的灵活性,能够适应更为广泛的应用需求。

2. Doris 半结使用场景

  1. 使用动态表解决数据结构复杂多变问题
  2. 动态表可以对实时接入的JSON数据进行解析,并根据数据中的scheme信息对SelectDB表中的表结构进行动态维护。动态Scheme维护有如下原则:
  • 导入的数据类型只支持JSON
  • 动态Scheme Change支持添加列
  • 支持字段自动多层级展开
  • 支持严格模式

3. Doris动态表使用实战

  1. 按照如下表结构创建一个表:
CREATE TABLE `httplogs` (
  `@timestamp` int(11) NULL COMMENT "",
  `clientip` varchar(20) NULL COMMENT "",
  `request` text NULL COMMENT "",
    ...
) ENGINE=OLAP
DUPLICATE KEY(`@timestamp`,`clientip`)
PARTITION BY RANGE(`@timestamp`)()
DISTRIBUTED BY HASH(`clientip`) BUCKETS 12
  1. 写入JSON数据
    向Doris中写入如下1条数据:
{"@timestamp":1676012713,"clientip":"192.168.1.1","request":"test"} 
  1. 添加uuid 列:
{
   "@timestamp":1676012713,
   "clientip":"192.168.1.1",
   "request":"test",
   "uuid":1
}

将上面数据写入Doris,Doris发现JSON数据比之前多了一列uuid,该列的数据类型为为int。此时Doris会自动将一个字段名称为uuid,字段类型为int的列维护到Doris表结构中。因此表结构变为:

CREATE TABLE `httplogs` (
  `@timestamp` int(11) NULL COMMENT "",
  `clientip` varchar(20) NULL COMMENT "",
  `request` text NULL COMMENT "",
   `uuid` int  COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(`@timestamp`,`clientip`)
PARTITION BY RANGE(`@timestamp`)()
DISTRIBUTED BY HASH(`clientip`) BUCKETS 12
  1. 多层嵌套数据自动展开:加入如下复杂结构数据
{
   "@timestamp":1676012713,
   "clientip":"192.168.1.1",
   "request":"test",
   "uuid":"2",
   "response":{
      "status":0,
      "msg":"",
      "data":{
         "apraise":"0",
         "favorite":"0",
         "comments":"2",
         "pv":202
      }
   }
}

写入上述数据,SelectDB会自动将response列以及其中的JSON数据进一步展开并进行元数据的维护。修改后的表结构为:文章来源地址https://www.toymoban.com/news/detail-476478.html

CREATE TABLE `httplogs` (
  `@timestamp` int(11) NULL,
  `clientip` varchar(20) NULL,
  `request` text NULL,
  `uuid` int(11) NULL COMMENT 'auto change 2023-02-14T15:53:10+08:00[Asia/Shanghai]',
  `response.status` int(11) NULL COMMENT 'auto change 2023-02-14T15:56:41+08:00[Asia/Shanghai]',
  `response.msg` text NULL COMMENT 'auto change 2023-02-14T15:56:41+08:00[Asia/Shanghai]',
  `response.data.apraise` text NULL COMMENT 'auto change 2023-02-14T15:56:41+08:00[Asia/Shanghai]',
  `response.data.favorite` text NULL COMMENT 'auto change 2023-02-14T15:56:41+08:00[Asia/Shanghai]',
  `response.data.comments` text NULL COMMENT 'auto change 2023-02-14T15:56:41+08:00[Asia/Shanghai]',
  `response.data.pv` int(11) NULL COMMENT 'auto change 2023-02-14T15:56:41+08:00[Asia/Shanghai]'
) ENGINE=OLAP
DUPLICATE KEY(`@timestamp`, `clientip`)
COMMENT 'OLAP'
DISTRIBUTED BY HASH(`clientip`) BUCKETS 12
PROPERTIES (
"persistent" = "false"
);
  1. 数据访问与查询:多级嵌套子JSON访问使用点号(.)隔开,字段上需要加`,例如:
select * from httplogs where `response.data.pv` ="202";

到了这里,关于Doris动态表使用快速入门实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 50.MongoDB快速入门实战

    MongoDB是一个文档数据库(以 JSON 为数据模型),由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。 原则上 Oracle 和 MySQL 能做的事情,MongoDB 都能做(包括 ACID 事务)。 MongoDB vs 关系型数据库 SQL MongoDB 数据库(database) 数据库(database) 表(table) 集合(

    2024年02月06日
    浏览(31)
  • Vue3实战教程(快速入门)

    本教程通过搭建一个简单项目,帮助读者快速入门Vue3项目实战,掌握Vue3、TS、Element Plus、axios等技术栈。 vue -V 查看vue版本,需要在4.5.1版本之后,即可进行以下操作。 (1)使用命令 vue create vue3-elementplus-demo 创建Vue项目。 (2)进入选项配置,选择 Manually select features ,进行

    2024年02月03日
    浏览(68)
  • ElasticSearch学习之ElasticSearch快速入门实战

    1.先“分词” 2.倒排索引(前提是分词) ElasticSearch官网地址: 欢迎来到 Elastic — Elasticsearch 和 Kibana 的开发者 | Elastic https://www.elastic.co/cn/ 下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch 我在本地下载的是7.17.3版本  解压: 启动es之前别忘了配置环境变量:ES_JA

    2024年02月14日
    浏览(34)
  • 最强Python开源库PyTorch入门实战(案例实战)+快速上手TorchServe

    作者:禅与计算机程序设计艺术 在过去几年里,深度学习领域涌现了一大批高水平的模型,这些模型基于大量的数据和GPU计算能力实现了炫酷的效果。这其中最具代表性的是卷积神经网络(Convolutional Neural Networks, CNN),其网络结构可以学习到图像、视频、文本等多种模态特

    2024年02月07日
    浏览(40)
  • C语言从入门到实战——动态内存管理

    在C语言中,动态内存管理是指程序运行时,通过调用特定的函数动态地分配和释放内存空间。动态内存管理允许程序在运行时根据实际需要来分配内存,避免了静态内存分配在编译时就确定固定大小的限制。 C语言中动态内存管理主要通过以下两个函数来实现: malloc 函数:

    2024年01月20日
    浏览(26)
  • 大数据Doris(四十八):Doris的动态分区示例与查看动态分区表调度情况

    文章目录 Doris的动态分区示例与查看动态分区表调度情况 一、示例

    2024年02月02日
    浏览(43)
  • 【算法】一文带你快速入门动态规划算法以及动规中的空间优化

    君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C++ 游戏开发 Hello,米娜桑们,这里是君兮_,如果给算法的难度和复杂度排一个排名,那么动态规划算法一定名列前茅。在最开始没有什么整体的方法的时候,我也曾经被动态规划折磨过很长时间,通过我一段时间的刷题

    2024年02月05日
    浏览(42)
  • redis实战-redis实现分布式锁&redisson快速入门

    前言 集群环境下的并发问题  分布式锁 定义 需要满足的条件 常见的分布式锁 redis实现分布式锁 核心思路 代码实现 误删情况 逻辑说明 解决方案 代码实现 更为极端的误删情况 Lua脚本解决原子性问题 分布式锁-redission redisson的概念 快速入门 总结 在前面我们已经实现了单机

    2024年02月09日
    浏览(47)
  • 记录 动态代理doris

    黏贴主要代码 刚开始想着是  本地使用的是 mysql8的jar 包 ,可能和 doris 有冲突索引手动引入java包 但是线上运行发现,内存一直在增加,手动引入的jar不释放,尝试很多办法依旧没见成效 偶然发现  可以class 给 搞出来  简单还省事 记录下-学艺不精,还得加油 当时参考网上大

    2024年04月22日
    浏览(20)
  • Transformers实战(二)快速入门文本相似度、检索式对话机器人

    文本匹配 是一个较为宽泛的概念,基本上只要涉及到两段文本之间关系的,都可以被看作是一种文本匹配的任务, 只是在具体的场景下,不同的任务对匹配二字的定义可能是存在差异的,具体的任务场景包括文本相似度计算、问答匹配、对话匹配、文本推理等等,另外,如

    2024年01月21日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包