探索ClickHouse——使用MaterializedView存储kafka传递的数据

news2024/11/25 13:32:18

在《探索ClickHouse——连接Kafka和Clickhouse》中,我们讲解了如何使用kafka engin连接kafka,并读取topic中的数据。但是遇到了一个问题,就是数据只能读取一次,即使后面还有新数据发送到该topic,该表也读不出来。
为了解决这个问题,我们引入MaterializedView。

创建表

该表结构直接借用了《探索ClickHouse——使用Projection加速查询》中的表结构。

CREATE TABLE materialized_uk_price_paid_from_kafka ( price UInt32, date Date, postcode1 LowCardinality(String), postcode2 LowCardinality(String), type Enum8('terraced' = 1, 'semi-detached' = 2, 'detached' = 3, 'flat' = 4, 'other' = 0), is_new UInt8, duration Enum8('freehold' = 1, 'leasehold' = 2, 'unknown' = 0), addr1 String, addr2 String, street LowCardinality(String), locality LowCardinality(String), town LowCardinality(String), district LowCardinality(String), county LowCardinality(String) ) ENGINE = MergeTree ORDER BY (postcode1, postcode2, addr1, addr2);

CREATE TABLE materialized_uk_price_paid_from_kafka
(
price UInt32,
date Date,
postcode1 LowCardinality(String),
postcode2 LowCardinality(String),
type Enum8(‘terraced’ = 1, ‘semi-detached’ = 2, ‘detached’ = 3, ‘flat’ = 4, ‘other’ = 0),
is_new UInt8,
duration Enum8(‘freehold’ = 1, ‘leasehold’ = 2, ‘unknown’ = 0),
addr1 String,
addr2 String,
street LowCardinality(String),
locality LowCardinality(String),
town LowCardinality(String),
district LowCardinality(String),
county LowCardinality(String)
)
ENGINE = MergeTree
ORDER BY (postcode1, postcode2, addr1, addr2)
Query id: 55b16049-a865-4d54-9333-d661c6280a09
Ok.
0 rows in set. Elapsed: 0.005 sec.

创建MaterializedView

CREATE MATERIALIZED VIEW uk_price_paid_from_kafka_consumer_view TO materialized_uk_price_paid_from_kafka AS SELECT splitByChar(' ', postcode) AS p, toUInt32(price_string) AS price, parseDateTimeBestEffortUS(time) AS date, p[1] AS postcode1, p[2] AS postcode2, transform(a, ['T', 'S', 'D', 'F', 'O'], ['terraced', 'semi-detached', 'detached', 'flat', 'other']) AS type, b = 'Y' AS is_new, transform(c, ['F', 'L', 'U'], ['freehold', 'leasehold', 'unknown']) AS duration, addr1, addr2, street, locality, town, district, county FROM uk_price_paid_from_kafka;

这样kafka topic中的数据被清洗到materialized_uk_price_paid_from_kafka表中。

查询

select * from materialized_uk_price_paid_from_kafka;

在这里插入图片描述
我们在给topic发送下面的内容

“{5FA8692E-537B-4278-8C67-5A060540506D}”,“19500”,“1995-01-27 00:00”,“SK10 2QW”,“T”,“N”,“L”,“38”,“”,“GARDEN STREET”,“MACCLESFIELD”,“MACCLESFIELD”,“MACCLESFIELD”,“CHESHIRE”,“A”,“A”

再查询表

select * from materialized_uk_price_paid_from_kafka;

在这里插入图片描述

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

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

相关文章

Ae 效果:CC Smear

扭曲/CC Smear Distort/CC Smear CC Smear (CC 漩涡条纹)可以将两点之间的源图像内容进行拉伸扭曲变形,形成一种类似油墨被涂抹或者柔体被拉扯之后的漩涡条纹效果。 ◆ ◆ ◆ 效果属性说明 From 从 漩涡条纹效果的起点。 默认为合成的中心。…

麒麟v10获取wwn

for i in cat /proc/partitions | awk {print $4} | grep sd do echo "Device: $i WWID: /usr/lib/udev/scsi_id --page0x83 --whitelisted --device/dev/$i" done | sort -k4

用于时间触发的嵌入式软件的IDE

TTE Systems的RapidiTTy IDE为希望创建“时间触发”微控制器软件以提高整体系统可靠性的开发人员提供了一个独立的环境。RapidiTTy(下面的图1)旨在解决深度嵌入的应用,包括医疗,国防,汽车和工业部门以及白色和棕色商品…

【Linux】Linux远程访问Windows下的MySQL数据库

1.建立Windows防火墙规则 首先需要开放windows防火墙,针对3306端口单独创建一条规则,允许访问。 打开windows安全中心防火墙与保护,点击高级设置 进入之后,点击入站规则,新建一条规则 新建端口入站规则 端口填写330…

【计算机网络】 基于TCP的简单通讯(客户端)

文章目录 流程伪代码代码实现加载库创建套接字连接服务端收发数据关闭套接字、卸载库 测试 流程伪代码 //1、加载库//2、创建套接字//3、连接服务端while(true){//4、发送数据//5、接收数据} //6、关闭套接字、卸载库代码实现 加载库 int err 0;WORD version MAKEWORD(2, 2…

表单控件拖拽平台都有哪些特点?

什么样的表单控件拖拽平台可以提升办公协作效率?在竞争激烈的当今社会,利用低代码技术平台的优势和特点,可以将企业内部的数据资源真正利用起来,帮助更多领域的客户朋友做出更有竞争优势的经营决策,实现数字化转型和流…

【Verilog 教程】6.3Verilog状态机

关键词:状态机,售卖机 有限状态机(Finite-State Machine,FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机不仅是一种电路的描述工具,而且…

0x23根据地址读取内存服务

诊断仪从ECU通过起始地址和内存大小空间来读取指定内存的数据,高地址范围未使用到的字节用0x00去填充。 请求报文格式 肯定响应报文形式

Makefile 优化编译速度

Makefile 优化编译速度 编写一个通用的 Makefile 模板,用来实现任意工程的编译管理架构搭建。 这里我主要有两种想法: 1. 用一个 Makefile 管理所有的文件。所有的文件都放到最顶层的 Makefile 中,一次性直接加载所有的 .c 文件完成编译。 …

使用ElementUI结合Mock完成主页的搭建

目录 一、Mock ( 1 ) 讲述 ( 2 ) 作用 二、引用 三、主页搭建 学习后带来的收获 一、Mock ( 1 ) 讲述 Mock.js是一个用于前端开发中模拟数据的库。它可以帮助开发人员在前端开发过程中模拟接口返回的数据,从而实现前后端分离开发。Mock.js提供了一套简单易…

优维产品最佳实践:实例视图

背 景 模型可以定义很多的字段,当这些字段越来越多的时候,直接打开实例页面,会杂乱无章的呈现出来,对于用户来说无法快速的找到想要的信息,也不便于查看数据。而且并不是所有的字段都一定会录入了数据,常常…

软件测试/测试开发丨结对编程助手 GitHubCopilot

点此获取更多相关资料 简介 GitHub Copilot 是一款 AI 结对程序员,可帮助您更快、更少地编写代码。GitHub Copilot 由 GitHub、OpenAI 和 Microsoft 开发的生成式 AI 模型提供支持。它可作为 Visual Studio Code、Visual Studio、Neovim 和 JetBrains 集成开发环境…

Vovsoft Text Edit Plus 专业文本编辑器工具软件:简洁高效的创作利器

作为一名专业软件评测人员,我有幸使用了一款备受赞誉的文本编辑器工具软件——Vovsoft Text Edit Plus。在这篇评测中,我将客观、细致地分析它的实用性和使用场景,同时揭示它的优缺点,帮助您更好地了解这款软件。 第一部分&#x…

ROS2 从头开始:第 4 部分 - 使用 ROS2 组合构建强大的机器人系统

一、说明 组件编程是软件规模庞大后,有限的程序个体不能满足系统的动态扩张的系统设计方案。组件编程的首要用途就是计算机操作系统。而ROS2也是操作系统,动态扩大或缩减是必然存在的,因此需要组件实现。 组件编程的其它参考资料: 【BOOST C++】组件编程(…

01-http概述

HTTP概述 HTTP使用的是可靠地数据传输协议。HTTP属于应用层协议 Web客户端和服务器 web服务器:又称http服务器,用于存储web内容,并向web客户端提供web内容web客户端:用于请求web服务器的应用软件,常见为浏览器 资源…

Java实现word excel ppt模板渲染与导出及预览 LibreOffice jodconverter

Java Office 一、文档格式转换 文档格式转换是office操作中经常需要进行一个操作,例如将docx文档转换成pdf格式。 java在这方面有许多的操作方式,大致可以分为内部调用(无需要安装额外软件),外部调用(需…

SW线光源是真实的(点光源)

点光源在渲染下真实 点光源地板反射是对的

uni-app:获取元素宽高

效果 代码 这里我定义的宽为500px,高为200排序,控制台输出的结果是502,202。原因是我设置了上下左右宽度各为1px的border边框导致 核心代码分析 // const query uni.createSelectorQuery();表示创建了一个选择器查询实例。通过这个实例,你可以使用不同的方法来选择…

MYSQL——二、理论基础

Mysql 一、什么是数据库二、数据库管理系统(DBMS)三、数据库与文件系统的区别四、数据库技术构成及发展史1、技术构成2、发展史 五、常见数据库1、关系型数据库2、ACID原则3、关系型数据库的优缺点4、非关系型数据库5、非关系数据库的优点6、DBMS支持的数据模型7、运维对数据库…

C#中的for和foreach的探究与学习

一:语句及表示方法 for语句: for(初始表达式;条件表达式;增量表达式) {循环体 }foreach语句: foreach(数据类型 变量 in 数组或集合) {循环体 }理解 1.从程序逻辑上理解,foreach是通过指针偏移实现的(最初在-1位置,每循环一次,指针就便宜一个单位),而for循环是通