【程序员必知必会3】你还不懂ClickHouse和Hive的区别?!

ClickHouse和Hive究竟哪些区别

ClickHouse和Hive都是用于大数据处理和分析的分布式存储和计算系统,但它们之间存在一些区别:

  • 架构:ClickHouse采用列式存储和向量化执行引擎,可以实现亚秒级别的数据查询。而Hive采用基于Hadoop的数据存储和MapReduce计算引擎,数据查询速度相对较慢。

  • 查询语言:ClickHouse使用类似于SQL的查询语言,称为ClickHouse-SQL,易于学习和上手。Hive使用的是类似SQL的查询语言,但Hive在执行查询时需要将查询转换为MapReduce任务,查询速度较慢。

  • 数据类型:ClickHouse支持多种数据类型,包括数值、字符串、日期等,可以方便地处理各种类型的数据。而Hive主要支持数值和字符串类型,对于其他数据类型需要进行转换。

  • 数据导入和导出:ClickHouse支持多种数据导入方式,包括CSV、JSON、Parquet等,同时也支持多种数据导出方式,包括CSV、JSON、Parquet等。而Hive主要支持Hadoop Distributed File System(HDFS)的数据导入和导出。

  • 实时处理:ClickHouse支持实时数据处理,可以实时地分析和处理数据。而Hive主要用于离线数据分析,不支持实时处理。

  • 性能:ClickHouse具有较高的查询性能,可以实现亚秒级别的数据查询。而Hive查询性能相对较慢,需要进行MapReduce任务的转换和执行。

ClickHouse是什么

clickhouse是用于联机分析(OLAP)的列式数据库管理系统

(补充:OLAP 与OLTP. 联机分析处理(OLAP) 系统的主要用途是分析聚合数据,而联机事务处理(OLTP) 系统的主要用途是处理数据库事务。前者专注于构建报告,每个报告都基于大量历史数据,但这样做的频率不高。而后者通常处理连续的事务流,不断修改数据的当前状态。
OLAP 和 OLTP 系统之间的基本权衡仍然是:
• 为了有效地构建分析报告,能够单独读取列至关重要,因此大多数 OLAP 数据库都是列式的,
• 单独存储列会增加行操作的成本,例如附加或就地修改,与列的数量成比例(如果系统尝试收集事件的所有详细信息以防万一,这可能会很大)。因此,大多数 OLTP 系统存储按行排列的数据。)

传统的行式数据库系统中,数据按行存储,处于同一行的数据被物理的存在一起。
在这里插入图片描述
mysql、Postgres和MS SQL Server 是常见的行式数据库系统。而列式数据库是将同一个列的数据存储在一起.
在这里插入图片描述

OLAP是什么

OLAP场景的关键特征
总结下来是,一但写入就不改了,主要是读操作,用于分析。有大量的列,查询结果一般远小于数据源,因为是通常是聚合操作。
• 绝大多数是读请求
• 数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。
• 已添加到数据库的数据不能修改。
• 对于读取,从数据库中提取相当多的行,但只提取列的一小部分。
• 宽表,即每个表包含着大量的列
• 查询相对较少(通常每台服务器每秒查询数百次或更少)
• 对于简单查询,允许延迟大约50毫秒
• 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
• 处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)
• 事务不是必须的
• 对数据一致性要求低
• 每个查询有一个大表。除了他以外,其他的都很小。
• 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中

为何不使用 MapReduce等技术?

我们可以将MapReduce这样的系统称为分布式计算系统,其中的reduce操作是基于分布式排序的。这个领域中最常见的开源解决方案是Apache Hadoop。
这些系统不适合用于在线查询,因为它们的延迟很大。换句话说,它们不能被用作网页界面的后端。这些类型的系统对于实时数据更新并不是很有用。如果操作的结果和所有中间结果(如果有的话)都位于单个服务器的内存中,那么分布式排序就不是执行reduce操作的最佳方式,这通常是在线查询的情况。在这种情况下,哈希表是执行reduce操作的最佳方式。优化map-reduce任务的一种常见方法是使用内存中的哈希表进行预聚合(部分reduce)。用户手动执行此优化。在运行简单的map-reduce任务时,分布式排序是导致性能下降的主要原因之一。

ClickHouse特性

  • 固定长度节省空间
    在一个真正的列式数据库管理系统中,除了数据本身外不应该存在其他额外的数据。这意味着为了避免在值旁边存储它们的长度«number»,你必须支持固定长度数值类型。例如,10亿个UInt8类型的数据在未压缩的情况下大约消耗1GB左右的空间,如果不是这样的话,这将对CPU的使用产生强烈影响。即使是在未压缩的情况下,紧凑的存储数据也是非常重要的,因为解压缩的速度主要取决于未压缩数据的大小。
  • 数据压缩高效
    除了在磁盘空间和CPU消耗之间进行不同权衡的高效通用压缩编解码器之外,ClickHouse还提供针对特定类型数据的专用编解码器
  • 基于磁盘存储
    提供每GB更低的存储成本,比其他需要在内存中工作的列式数据库更省钱。
  • 多核心并行处理
  • 多服务器分布式处理
  • 支持sql
    使用的是基于sql的声明式查询语言。
  • 实时的数据更新、适合在线查询
    为了使查询能够快速在主键中进行范围查找,数据总是以增量的方式有序的存储在MergeTree中。因此,数据可以持续不断地高效的写入到表中,并且写入的过程中不会存在任何加锁的行为。
  • 支持数据复制和数据完整性
    ClickHouse使用异步的多主复制技术。当数据被写入任何一个可用副本后,系统会在后台将数据分发给其他副本,以保证系统在不同副本上保持相同的数据。在大多数情况下ClickHouse能在故障后自动恢复,在一些少数的复杂情况下需要手动恢复。

劣势

  • 没有完整是事务支持
  • 缺少高频率 低延迟的修改数据的能力,仅能批量删除修改数据
  • 稀疏索引导致不适合利用其键 检索单行的点查询

(注:点查询是应用访问OLTP数据库的一种常见方式,特点是返回结果前只扫描表中的少量数据,在淘宝上查看订单或者商品信息对应到数据库上的操作就是点查。)

ClickHouse解析JSON字符串和JSON数组

SELECTJSONExtractArrayRaw(cast(JSONExtractArrayRaw(cast(JSONExtractString(JSONExtractArrayRaw(cast(JSONExtractString(JSONExtractString(a.info,'logOfChain'),'11') as String) ,'logInfo')[1],'table') as String),'rows')[1] as String) ,'columnValue')[2]
FROM table_name
WHERE toDate(`timestamp` / 1000) in ( '2023-08-16')and toHour(toDateTime(`timestamp` / 1000)) in ('17')and userId = 'xxxxx'and reqId = 'xxxxx'andORDER BY `timestamp` DESC
LIMIT 10

参考

https://clickhouse.com/docs/zh
https://juejin.cn/post/7233004121682575418

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊云科技通过生成式AI,帮助清华RIOS加速计算和分析的处理效率

近日,硬件创建平台Efabless宣布了其第一届“生成式AI开源芯片设计挑战赛”(AI Generated Open-Source Silicon Design Challenge)的评选结果。来自清华大学的RISC-V国际开源实验室(RIOS Lab)团队基于亚马逊云科技云上科…

JLink和ST-Link接口引脚介绍

STM32F1系列,STM8S系列,PY32F003系列都用过好久了,但是对JLink和ST-Link下载器认识,还是很肤浅的。有时候,需要自己接线,却不知道引脚定义,特整理如下: 1、ST-Link ST-Link适合对象…

解决IDEA中java的system.properties乱码问题

在拉了别人的代码到本地后发现system.properties中中文注释都变成了乱码,故记录下解决步骤,供参考,我的系统是mac系统 1、在IDEA中打开设置,IDEA--->Preferences 2、点击Editor-->File Encodings 3、图中三处选择UTF-8&…

智能配电室运维云平台

智能配电室运维云平台依托电易云-智慧电力物联网,是通过物联网技术实现配电设备智能化管理和运维的云服务系统。该平台可以实时监测配电设备的运行状态、能耗情况、故障报警等信息,并通过云计算、大数据等技术进行分析和处理,提供精准的数据支…

传输层—UDP原理详解

目录 前言 1.netstat 2.pidof 3.UDP协议格式 4.UDP的特点 5.面向数据报 6.UDP的缓冲区 7.UDP使用注意事项 8.基于UDP的应用层协议 总结 前言 在之前的文章中为大家介绍了关于网络协议栈第一层就是应用层,包含套接字的使用,在应用层编码实现服务…

nc前端合计行

nc前端合计行 1.无表体和单表体的合计行加法 只要卡片下 如果是只有表头要合计行就只留ShowTotalLine;如果是只有表体要合计行就只留ShowTotalLineTabcodes 2.多表体的合计行加法 表头卡片下和列表下都要 3.档案的合计行加法 重写一下列表模板

cin、cin.getline()、getline()的用法【C++】

一、cin>> 用法1&#xff1a;输入一个数字或字符 #include <iostream> using namespace std; int main () {int a,b;cin>>a>>b;cout<<ab<<endl;return 0; } 用法2&#xff1a;接收一个字符串&#xff0c;遇“空格”、“TAB”、“回车”…

select多选回显问题 (取巧~)

要实现的效果&#xff1a; 实际上select选择框&#xff0c;我想要的是数组对象&#xff0c;但是后端返回来的是个字符串。 以下是解决方法&#xff1a; 以上是一种简单的解决方法~ 也可以自己处理数据或者让后端直接改成想要的格式。

无涯教程-JavaScript - ISOWEEKNUM函数

描述 ISOWEEKNUM函数返回给定日期的年份的ISO周编号。 语法 ISOWEEKNUM (date)争论 Argument描述Required/OptionalDateDate is the date-time code used by Excel for date and time calculation.Required Notes Microsoft Excel将日期存储为连续数字,因此可以在计算中使…

【会议征稿】第五届土木工程、环境资源与能源材料国际学术会议(CCESEM 2023)

第五届土木工程、环境资源与能源材料国际学术会议&#xff08;CCESEM 2023&#xff09; 第五届土木工程、环境资源与能源材料国际学术会议&#xff08;CCESEM 2023&#xff09;&#xff0c;定于2023年10月27日至29日在厦门举行。会议主要围绕“土木工程”、“环境资源”、“能…

15种下载文件的方法文件下载方法汇总超大文件下载

15种下载文件的方法&文件下载方法汇总&超大文件下载 15种下载文件的方法Pentesters经常将文件上传到受感染的盒子以帮助进行权限提升&#xff0c;或者保持在计算机上的存在。本博客将介绍将文件从您的计算机移动到受感染系统的15种不同方法。对于那些在盒子上存在且需要…

Linux xargs命令继续学习

之前学习过Linux xargs&#xff0c;对此非常的不熟悉&#xff0c;下面继续学习一下&#xff1b; xargs 可以将管道或标准输入&#xff08;stdin&#xff09;数据转换成命令行参数&#xff0c;也能够从文件的输出中读取数据&#xff1b; xargs也可以给命令传递参数&#xff1b;…

redis核心数据结构

redis下载地址&#xff1a;Download | Redis linux进入redis目录首先使用make命令进行c的编译&#xff0c;修改redis.conf文件&#xff1a; daemonize yes #后台启动 protected-mode no #关闭保护模式&#xff0c;开启的 # 需要注释掉bind #bind 127.0.0.1&#xff08;bind…

【已解决】Java 后端使用数组流 Array.stream() 将数组格式的 Cookie 转换成字符串格式

&#x1f389;工作中遇到这样一个场景&#xff1a;远程调用某个接口&#xff0c;该接口需要用户的 Cookie 信息进行权限认证&#xff0c;认证通过之后才可以打通并返回数据。 在后端拿到 httpServletRequest 后&#xff0c;调用 getCookies() 方法&#xff0c;返回的是一个 Coo…

车规微控制器的ECC机制及EMU外设

车规微控制器的ECC机制及EMU外设 文章目录 车规微控制器的ECC机制及EMU外设引言ECC的基本原理ECC RAM的访问方式ECC RAM的初始化SRAM ECC错误注入及EMU外设Flash ECC校验参考文献 引言 ECC是微控制器系统中&#xff0c;用于保障信息安全的常用机制&#xff0c;主要是避免存储设…

无涯教程-JavaScript - DAYS360函数

描述 DAYS360函数返回基于360天的年份(十二个月为30天)的两个日期之间的天数,该天数用于会计计算。 语法 DAYS360 (start_date,end_date,[method])争论 Argument描述Required/OptionalStart_dateThe two dates between which you want to know the number of days.Required…

程序员自由创业周记#2:前期准备

感恩 上次公开了创业的决定后&#xff0c;得到了很多亲朋好友和陌生朋友的鼓励或支持&#xff0c;以不同的形式&#xff0c;感动之情溢于言表。这些都会记在心里&#xff0c;大恩不言谢~ 创业方向 笔者是一名资质平平的iOS开发程序猿&#xff0c;创业项目也就是开发App卖&am…

Python VScode 配置

在上一章节中我们已经安装了 Python 的环境&#xff0c;本章节我们将介绍 Python VScode 的配置。 准备工作&#xff1a; 安装 VS Code安装 VS Code Python 扩展安装 Python 3 安装 VS Code VSCode&#xff08;全称&#xff1a;Visual Studio Code&#xff09;是一款由微软…

算法:移除数组中的val的所有元素---双指针[2]

1、题目&#xff1a; 给你一个数组 nums和一个值 val&#xff0c;你需要原地移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需要考虑数组…

附录3-爬取58二手房信息,爬取4k图片案例,爬取城市名称,爬取站长素材简历模板(xpath使用案例)

目录 1 爬取58二手房信息 1.1 分析 1.2 代码 2 爬取4k图片案例 2.1 分析 2.2 代码 3 爬取城市名称案例 3.1 分析 3.2 代码 4 爬取站长素材简历模板 4.1 分析 4.2 代码 1 爬取58二手房信息 地址 请输入验证码 ws:121.36.42.44 1.1 分析 我需要标题…