大数据hive表和iceberg表格式

iceberg:

https://iceberg.apache.org/
iceberg表,是一种面向大型分析数据集的开放表格式,旨在提供可扩展、高效、安全的数据存储和查询解决方案。它支持多种存储后端上的数据操作,并提供 ACID 事务、多版本控制和模式演化等特性,使数据管理和查询更加灵活便捷。Iceberg 可以屏蔽底层数据存储格式上的差异,向上提供统一的操作 API,使得不同的引擎可以通过其提供的 API 接入。
表格式(Table Format)可以理解为元数据以及数据文件的一种组织方式,处于计算框架(Flink,Spark…)之下,数据文件(orc, parquet)之上。这一点与Hive有点类似,hive也是基于HDFS存储、MR/SPARK计算引擎,将数据组织成一种表格式,提供Hive Sql对数据进行处理。如果我们的文件格式选择的是parquet,那么文件是以“.parquet”结尾,例如:

00000-0-root_20211212192602_8036d31b-9598-4e30-8e67-ce6c39f034da-job_1639237002345_0025-00001.parquet 就是一个数据文件。
在这里插入图片描述

Iceberg 设计为以快照(Snapshot)的形式来管理表的各个历史版本数据。每个快照中会列出表在某个时刻的所有数据文件列表。Data 文件存储在不同的 Manifest 文件中,Manifest 文件存储在一个 Manifest List 文件中,Manifest 文件可以在不同的 Manifest List 文件间共享,一个 Manifest List 文件代表一个快照。
 Manifest list 文件是元数据文件,其中存储的是 Manifest 文件的列表,每个 Manifest 文件占据一行。
 Manifest 文件是元数据文件,其中列出了组成某个快照的数据文件列表。每行都是每个数据文件的详细描述,包括数据文件的状态、文件路径、分区信息、列级别的统计信息(例如每列的最大最小值、空值数等)、文件的大小以及文件中数据的行数等信息。
 Data 文件是 Iceberg 表真实存储数据的文件,一般是在表的数据存储目录的 data 目录下。

Apache Iceberg表的特点主要包括:

开放的数据湖表格式:Iceberg是一种开放的数据湖表格式,可以在HDFS或对象存储上构建数据湖存储服务,与多种计算引擎如Spark、Flink、Hive和Presto等兼容 。

1.核心能力:Iceberg设计初衷是解决Hive数仓上云的问题,提供基于HDFS或对象存储的轻量级数据湖存储服务,支持ACID语义、行级数据变更、历史版本回溯、高效数据过滤、Schema变更、分区布局变更以及隐式分区 。

2.文件级别的元数据管理:Iceberg通过快照进行多版本控制,每个快照对应一组清单,清单再对应具体数据文件 。

3.数据文件不可变性:Iceberg数据文件一旦创建就不能被修改,而是通过追加新数据文件来增加新数据 。

4.表快照:Iceberg表快照是表在特定时间点的版本,每次修改都会生成新的快照,帮助实现版本控制和数据管理 。

5.清单列表:清单列表是数据文件的元数据信息列表,对数据查询、管理和优化等操作至关重要 。

6.Catalog管理:Catalog是管理表和数据的入口,负责存储表的元数据信息,并允许通过编程方式或CLI进行操作 。

7.ACID和MVCC:Iceberg提供了ACID语义和多版本并发控制,确保数据的一致性和可靠性 。

8.Schema和Partition Evolution:Iceberg支持灵活的表schema变更和分区方式变更,允许对表进行增加列、删除列、更新列等操作 。

hive

Hive就是一种数据仓库,可以将结构化的数据文件映射为数据库表,并提供简单的sql查询功能,可以将sql语句转化为mapreduce任务执行,底层由HDFS来提供数据的存储,说白了hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更进一步可以说hive就是一个MapReduce的客户端。Hive本身并不提供数据的存储功能,它可以使已经存储的数据结构化。hive将数据映射成数据库和一张张表,库和表的元数据信息可以存在metastore上(hive metastore一般是关系型数据库)。 通过 SQL 轻松访问数据的工具,从而支持提取/转换/加载 (ETL)、报告和数据分析等数据仓库任务。一种将结构强加于各种数据格式的机制访问直接存储在 Apache HDFS或其他数据存储系统(例如 Apache HBase)中的文件。

hive常用的存储格式有五种,textfile、sequencefile、rcfile、orc、parquet。
Hive表的一些关键特点:

结构化数据存储:
Hive表用于存储结构化数据,数据以行和列的形式组织,类似于传统关系型数据库的表。
元数据存储:
Hive表的元数据(如表名、列名、数据类型、分区信息等)存储在Hive Metastore中,这是一个中心化的元数据存储库。
数据存储位置:
Hive表的数据实际存储在HDFS上,Hive表与底层文件系统的位置相关联。
分区和分桶:
Hive表支持分区(Partition)和分桶(Bucket),这有助于优化查询性能和数据管理。
数据类型:
Hive表支持多种数据类型,包括数值型、字符串型、日期型、复杂类型(如数组、结构、映射等)。
表属性:
Hive表可以设置各种属性,如存储格式(如TextFile、SequenceFile、ORC、Parquet等)、压缩选项等。
外部表和内部表:
Hive支持外部表(External Table)和内部表(Managed Table),外部表的存储不受Hive管理,而内部表的存储由Hive管理。
索引:
Hive表可以创建索引,以提高查询效率。
存储结构:
Hive表可以有不同的存储结构,如行存储或列存储。
查询语言:
Hive提供了自己的查询语言HiveQL,它是SQL的一种方言,用于查询和管理Hive表中的数据。
数据操作:
用户可以使用HiveQL执行常见的数据操作,如SELECT、INSERT、UPDATE、DELETE等。

对比

Iceberg提供了事务处理能力,支持ACID语义,确保数据的一致性和完整性。Hive在早期版本中对事务性的支持不够完善,尽管在Hive 3中引入了对ACID的支持,但Iceberg在设计上更倾向于事务性操作 。

大框架上,Iceberg的文件组织形式与Hive类似,都是HDFS的目录,在warehouse下以/db/table的形式组建结构。Iceberg 是一种适用于 HDFS 或者对象存储的表格式,把底层的 Parquet、ORC 等数据文件组织成一张表,向上层的 Spark,Flink 计算引擎提供表层面的语义,作用类似于 Hive Meta Store,但是和 Hive Meta Store 相比:

Iceberg 能避免 File Listing 的开销;

也能够提供更丰富的语义,包括 Schema 演进、快照、行级更新、 ACID 增量读等。

Iceberg是纯文件的,元数据也存储在HDFS上,并做到了文件级别的元数据组织。
在/db/table的目录结构下,有两个目录:metadata和data,用于存储元数据和数据。
 data下存储数据,比较单一,只有一类文件,默认以Parquet形式存储。
 metadata下存储元数据,分三层:metadata file、manifest list、manifest file。元数据目前有两个版本:V1Metadata、V2Metadata,创建table时带参数设置:

CREATE TABLE tl(id BIGINT) WITH ('format-version'='2')

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

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

相关文章

【常见开源库的二次开发】基于openssl的加密与解密——Base的编解码(二进制转ascll)(二)

目录: 目录: 一、 Base64概述和应用场景 1.1 概述 1.2 应用场景 二、Base16 2.1 Base16编码 2.2 Base16编解码 三、Base64 四、OpenSSL BIO接☐ 4.1 Filter BIOs: 4.2 Source/Sink BIOs: 4.3 应用场景: 4.4 具体使用&…

设计模式学习(二)工厂模式——抽象工厂模式

设计模式学习(二)工厂模式——抽象工厂模式 背景抽象工厂模式优点与缺点参考文章 背景 现在我需要开发一个相机操作模块,它可能在Windows下运行,也可能在Linux下运行。由于在厂家提供的SDK中,Windows下的SDK和Linux下…

【JVM】JVM实战笔记-随笔

JVM实战笔记-随笔 前言字节码如何查看字节码文件jclasslibJavapArthasArthurs监控面板Arthus查看字节码信息 内存调优内存溢出的常见场景解决内存溢出发现问题Top命令VisualVMArthas使用案例 Prometheus Grafana案例 堆内存情况对比内存泄漏的原因:代码中的内存泄漏并发请求问…

代谢组数据分析(十四):代谢物组间网络分析(spearman coefficient)

介绍 在代谢物网络分析领域,研究者采用斯皮尔曼系数来定量评估代谢物之间的相关性。该系数作为一种有效的非参数统计工具,能够揭示代谢物间潜在的关联模式,不受它们分布特性的限制。通过计算所有代谢物配对间的斯皮尔曼系数,研究者能够构建出反映代谢物相互关系的网络。 …

Git钩子Hook功能

💾 Hook 钩子 目录 🔔 简介🔔 常见类型🔔 如何配置🔔 使用场景🔔 示例 🔔 简介 Git Hooks是Git内置的一种机制,允许在特定事件发生时执行自定义脚本。Git Hook可以在客户端和服务器端…

PHP多功能投票微信小程序系统源码

🎉一键决策,尽在掌握!多功能投票小程序,让选择不再纠结🤔 📲【开篇:告别传统,拥抱便捷投票新时代】📲 还在为组织投票活动手忙脚乱?或是面对众多选项犹豫不…

Hadoop发展史和生态圈介绍

目录 一、Hdoop概述 二、Hadoop生态组件 三、大数据的技术生态体系 四、Hadoop发展历史 4.1 概述 4.2 Hadoop历史发展节点 4.2.1 2002-2004年理论阶段 4.2.2 2005-2008年Hadoop的问世与崛起 4.2.3 2009-2017年Hadoop助力大数据行业的发展 4.2.4 至今 五、Hadoop优势特…

华为HCIP Datacom H12-821 卷40

1.单选题 下面是台路由器BGP错误输出信息&#xff0c;关于这段信息描述错误的是 <HUAWEI>display bgp error Error Type :Peer Error Date/Time :2010-03-22 12:40:39 Peer Address :10.1.1.5 Error Info : Incorrect remote AS A、可能是由于邻居…

面向 AI 而生的香橙派 AIpro 开发板开箱实测

前几天搞到一块很牛掰的开发板&#xff0c;是香橙派联合华为精心打造的高性能 AI 开发板 – OrangePi AIpro 开发板。 其搭载了昇腾 AI 处理器&#xff0c;可提供 8TOPS INT8 的计算能力&#xff0c;作为单板硬件设备来说&#xff0c;算力杠杠的了&#xff0c;至于跑 AI 模型性…

django实现用户的注册、登录、注销功能

创建django项目的步骤&#xff1a;Django项目的创建步骤-CSDN博客 一、前置工作 配置数据库&#xff0c;设置数据库引擎为mysql 1、在settings文件中找到DATABASES, 配置以下内容 DATABASES {"default": {ENGINE: django.db.backends.mysql, # 数据库引擎NAME: dja…

打破平台限制,使智能手机和平板电脑上无缝运行Windows x86/x64架构的软件和游戏的一款安卓应用

大家好&#xff0c;今天给大家分享一款专为Android设备设计的模拟器应用Winlator。其核心功能是能够在基于ARM架构的智能手机和平板电脑上无缝运行Windows x86/x64架构的软件和游戏。 Winlator是一款Android应用程序&#xff0c;它允许用户使用Wine和Box86/Box64在Android设备上…

docker-compose部署redis-exporter

一、安装prometheus 1、安装 version: 3.1services:redis-exporter:image: bitnami/redis-exporter:latestcontainer_name: redis-exporterports:- 9121:9121environment:TZ: Asia/Shanghaicommand:- --redis.addrredis://127.0.0.1:6379# - --redis.passwordlabels:org.labe…

C#学习3-微软C#官方文档Microsoft-dotnet-csharp.pdf

文章目录 1.内插表达式的字段宽度和对齐方式 1.内插表达式的字段宽度和对齐方式 static void Main(string[] args) {var titles new Dictionary<string, string>() {["Doyle ,Arthur"] "Hound of the Basker,The",["Lodon ,Jack"] &quo…

PHP恋爱话术微信小程序系统源码

&#x1f496;恋爱高手的秘密武器&#xff01;恋爱话术微信小程序&#xff0c;让情话信手拈来✨ &#x1f4ad;【开场白&#xff1a;恋爱路上的甜蜜助手】&#x1f4ad; 还在为跟心仪的TA聊天时找不到话题而尴尬&#xff1f;或是担心自己说的每句话都显得那么“直男/女”&…

vi 编辑器快捷生成 main 函数和基本框架

step1: 执行 sudo vi /etc/vim/vimrc &#xff08;修改vimrc需要管理员权限&#xff1a;sudo&#xff09; step2:输入用户密码&#xff0c;回车, 编辑vimrc文件 step3:在尾行输入以下代码&#xff08;可复制&#xff09; map mf i#include<stdio.h><ESC>o#includ…

uniapp 微信小程序根据后端返回的文件链接打开并保存到手机文件夹中【支持doc、docx、txt、xlsx等类型的文件】

项目场景&#xff1a; 我们在使用uniapp官方提供的uni.downloadFile以及uni.saveFile时&#xff0c;会发现这个文件下载的默认保存位置和我们预想的不太一样&#xff0c;容易找不到&#xff0c;而且没有提示&#xff0c;那么我们就需要把文件打开自己保存并且有提示保存到哪个…

探索前沿科技:从迁移学习看人工智能的无限可能性

从迁移学习看人工智能的无限可能性 1 引言1.1 什么是迁移学习1.1.1 迁移学习的定义1.1.2 迁移学习的起源和背景 1.2 迁移学习的重要性1.2.1 解决小数据集问题1.2.2 提高模型训练效率1.2.3 应用于不同领域的广泛性 1.3 迁移学习的前景 2 迁移学习的基本概念2.1 源域和目标域2.1.…

【区块链 + 智慧政务】涉税行政事业性收费“e 链通”项目 | FISCO BCOS应用案例

国内很多城市目前划转至税务部门征收的非税收入项目已达 17 项&#xff0c;其征管方式为行政主管部门核定后交由税务 部门征收。涉税行政事业性收费受限于传统的管理模式&#xff0c;缴费人、业务主管部门、税务部门、财政部门四方处于 相对孤立的状态&#xff0c;信息的传递靠…

无人机之机架类型篇

碳纤维机架 具有低密度、高强度和高刚度的特点&#xff0c;非常适合商业或工业级无人机的设计。碳纤维机架在飞行过程中具有良好的减振效果&#xff0c;使飞行更加稳定&#xff0c;但制作工艺复杂&#xff0c;成本较高。 工程塑料机架 以其轻便、耐冲击和易加工等特点受到一…

【C语言】深入解析选择排序

文章目录 什么是选择排序&#xff1f;选择排序的基本实现代码解释选择排序的优化选择排序的性能分析选择排序的实际应用结论 在C语言编程中&#xff0c;选择排序是一种简单且直观的排序算法。尽管它在处理大型数据集时效率不高&#xff0c;但由于其实现简单&#xff0c;常常用于…