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

news2025/1/21 0:56:26

在这里插入图片描述

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数据进一步展开并进行元数据的维护。修改后的表结构为:

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";

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

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

相关文章

Java基础知识总结归纳

0. 入门常识 0.1 Java 特点 0.2 Java 和 C 0.3 JRE 和 JDK 0.4 Java 程序编译过程 1. 数据类型 1.1 基本数据类型 1.2 引用类型 1.3 封装类 1.4 缓存池 2. 字符串 String 2.1 定义 2.2 不可变性的优点 2.3 String vs StringBuffer vs StringBuffer 2.4 字符串常量池…

【网络协议详解】——BGP协议(学习笔记)

目录 🕒 1. 概述🕒 2. BGP 发言人🕒 3. 工作原理🕒 4. 报文格式🕘 4.1 报文首部🕘 4.2 打开报文🕘 4.3 更新报文🕘 4.4 保活报文🕘 4.5 通知报文 🕒 5. BGP 的…

接口实战一“篇”入魂!你真正地了解接口测试么?

目录 前言: 需求描述: 计划和目标: 需求分析: 1.功能点划分 2.接口测试用例设计 3.测试用例评审 4.测试准备 5.测试执行 前言: 接口测试是软件测试的一种类型,它主要关注软件系统中的接口或 API …

STM32CubeIDE 入门教程

1.安装教程 1.1 去ST 官网下载软件安装包:https://www.st.com/content/st_com/en.html 1.2软件安装: 2.创建工程 2.1 双击打开软件,选择工作区路径,不要出现中文名称 2.2 选择直接创建STM32 工程,我们这里以STM32F103…

详细讲解!Selenium真正绕过webdriver检测

目录 前言: 一、什么是真正绕过浏览器检测? 2、 普通的启动webdriver 3、Js注入真正绕过webdriver的检测属性 js注入的文件[stealth.min.js] 前言: Selenium是一个流行的开源测试工具,用于网络应用程序测试。它使测试人员能够…

运用短信案例举例!Appium自动化测试该如何进行PO模式

目录 前言: 案例一:自动发送短信 前言: Appium是一种广泛用于移动应用程序自动化测试的工具,可以支持iOS和Android系统。在测试App时,使用Page Object(PO)模式可以提高测试用例的可重用性和可…

如何短时间内上手公众号的运营?选择工具很重要

现在网上都在讲如何运营微信公众号,讲有什么微信公众号技巧,这些都是需要用户话花较多的时间去尝试和理解,今天小编分享一个更简单高效运营公众号的方法!下面跟着小编的教程一起学习如何使用乔拓云公众号助手去运营自己的公众号吧…

Vue3 ElementPlus Dialog封装

引言 多个页面中需要录入用户数据(弹窗内容相同),重复写弹窗代码比较繁琐。因此封装一下组件,使用效果如下: 本例中模型较简单,记录下使用方法和原理 实现原理 参考VUE官方两个例子,基本父子件…

C++ 教程(02)---- 环境设置

本地环境设置 如果您想要设置 C 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C 编译器。 文本编辑器 这将用于输入您的程序。文本编辑器包括 Windows Notepad、OS Edit command、Brief、Epsilon、EMACS 和 vim/vi。 文本编辑器的名…

技术架构演进

架构演进 单机架构应用数据分离架构应用服务集群架构读写 主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构实际互联网架构 单机架构 单机架构: 用户访问量很少,没有对我们的性能、安全等提出很高的要求,而且系统架构简单&#x…

Pilota:为什么一个代码生成工具如此复杂丨GOTC Rust系列分享

对于一个 Rust RPC 框架来说,根据 IDL 做代码生成是为了让用户更方便地使用框架。而生成代码的质量以及周边能力都会对用户的开发体验有着非常非常直接的影响。 所以,字节跳动 CloudWeGo 开发了 Pilota 这样的一个框架,来为用户生成良好的代码…

Redis延时双删

1.为什么缓存和MySQL数据没有保持一致性? 数据一致性是什么意思,“一致性”包含如下情况: 若缓存中有数据,则缓存的数据值需要和DB值相同若缓存无数据,则DB值必须是最新值 不符合这两种情况的,都属于缓存…

【OJ比赛日历】快周末了,不来一场比赛吗? #06.10-06.16 #12场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2023-06-10(周六) #4场比赛2023-06-11…

实验五 标准ACL的配置【网络安全】

实验五 标准ACL的配置【网络安全】 前言推荐实验五 标准ACL的配置问题方案步骤 最后 前言 2023-6-8 18:54:22 以下内容源自《【网络安全】》 仅供学习交流使用 推荐 配置标准ACL 实验五 标准ACL的配置 问题 络调通后,保证网络是通畅的。同时也很可能出现未经…

软件测试与打螺丝

单元测试中的FIRST代表下面五组英文单词对应的原则: FastIsolated / IndependentRepeatableSelf-validatingTimely / Thorough 软件开发中,往往会因为我们没有注意到的逻辑或难以理解的代码,而引进Bug来。 怎么尽早地发现Bug,…

【springCloud-2】Ribbon负载均衡

负载均衡,一般分为服务端负载均衡和客户端负载均衡。 服务端:如Nginx,F5等,请求到达服务器后进行负载均衡。 客户端:客户端获取到服务端的列表,自己经过一定的计算后选择某一台访问。 ribbon实现的就是客…

Monica: 您的又一个免费ChatGPT 4.0

最近 ChatGPT 又开始封号了,主要原因如下: 违反使用条款:如果用户违反了平台或应用的使用条款,例如发布违法、恶意或滥用行为的内容,侵犯他人的权利,或者从事垃圾信息传播等,管理员可能会采取封…

多方合作时,系统间的交互是怎么做的?

大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 以下是正文! 文章背景 我们最近做了很多…

【资料分享】ESD基本概念及ESD产生来源详解

CMOS工艺集成电路制造技术已经进入纳米时代,随着特征尺寸的降低,ESD (Electro-Static Discharge,静电放电)问题越来越成为集成电路中最主要的可靠性问题。 ESD基本概念 ESD定义:ESD(Electro-Static disc…

垄断与市场力量

五力竞争分析模型 供应商的判断能力购买者的判断能力新进入者的威胁现有的竞争对手产品和服务的替代品的压力产品和服务的互补品 政府决策价值定位 服务哪些客户?满足这些客户的哪些需求?收取什么价格?垄断企业的经营 竞争企业是价格接受者,而垄断企业是价格制定者。 市场…