云小课|MRS基础原理之Hudi介绍「终于解决」

云小课|MRS基础原理之Hudi介绍「终于解决」阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。 摘要:Hudi是数据湖的

云小课|MRS基础原理之Hudi介绍

阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。

云小课|MRS基础原理之Hudi介绍「终于解决」

摘要:Hudi是数据湖的文件组织层,对Parquet格式文件进行管理提供数据湖能力,支持多种计算引擎。

本文分享自华为云社区《【云小课】EI第39课 MRS基础原理之Hudi介绍》,作者:Hello EI 。

Hudi是数据湖的文件组织层,对Parquet格式文件进行管理提供数据湖能力,支持多种计算引擎,提供IUD接口,在 HDFS的数据集上提供了插入更新和增量拉取的流原语。

云小课|MRS基础原理之Hudi介绍「终于解决」

Hudi结构

Hudi的架构如图1-1所示。

云小课|MRS基础原理之Hudi介绍「终于解决」

Hudi支持两种表类型

Copy On Write

写时复制表也简称cow表,使用parquet文件存储数据,内部的更新操作需要通过重写原始parquet文件完成。

  • 优点:读取时,只读取对应分区的一个数据文件即可,较为高效。
  • 缺点:数据写入的时候,需要复制一个先前的副本再在其基础上生成新的数据文件,这个过程比较耗时。且由于耗时,读请求读取到的数据相对就会滞后。

Merge On Read

读时合并表也简称mor表,使用列格式parquet和行格式Avro两种方式混合存储数据。其中parquet格式文件用于存储基础数据,Avro格式文件(也可叫做log文件)用于存储增量数据。

  • 优点:由于写入数据先写delta log,且delta log较小,所以写入成本较低。
  • 缺点:需要定期合并整理compact,否则碎片文件较多。读取性能较差,因为需要将delta log和老数据文件合并。

Hudi支持三种视图,针对不同场景提供相应的读能力

Snapshot View

实时视图:该视图提供当前hudi表最新的快照数据,即一旦有最新的数据写入hudi表,通过该视图就可以查出刚写入的新数据。

cow表和mor均支持这种视图能力。

Incremental View

增量视图:该视图提供增量查询的能力,可以查询指定COMMIT之后的增量数据,可用于快速拉取增量数据。

cow表支持该种视图能力, mor表也可以支持该视图,但是一旦mor表完成compact操作其增量视图能力消失。

Read Optimized View

读优化视图:该视图只会提供最新版本的parquet文件中存储的数据。

该视图在cow表和mor表上表现不同:

  • 对于cow表,该视图能力和实时视图能力是一样的(cow表只用parquet文件存数据)。
  • 对于mor表,仅访问基本文件,提供给定文件片自上次执行compact操作以来的数据, 可简单理解为该视图只会提供mor表parquet文件存储的数据,log文件里面的数据将被忽略。 该视图数据并不一定是最新的,但是mor表一旦完成compact操作,增量log数据被合入到了base数据里面,这个时候该视图和实时视图能力一样。

如何使用Hudi

目前Hudi集成在Spark2x中,使用Hudi需要安装Spark2x组件,并安装Spark2x的客户端。

  • MRS集群的创建可参考MRS快速入门中的“创建集群”章节,例如购买MRS 3.1.0版本集群。
  • 安装Spark2x客户端,可参考MRS用户指南中的“安装客户端”章节,例如客户端安装目录为:“/opt/client”。
  • 安全模式(开启Kerberos认证)集群,在使用Hudi时,需要创建一个具有访问Hudi权限的用户,可参考MRS用户指南中的“创建用户”章节,用户组选择hadoop、hive和supergroup,主组选择hadoop,角色选择System_administrator,例如创建人机用户“testuser”。

1.使用root用户登录集群客户端节点,执行如下命令:

cd /opt/client
source bigdata_env
source Hudi/component_env
kinit testuser

2.执行以下命令进入Spark SQL命令行。

spark-sql --master yarn

3.准备Hive数据表。

drop table if exists hivetb_text;
create table hivetb_text (id int, comb long, name string, dt date) row format delimited fields terminated by "," stored as textfile;
insert into hivetb_text values (3,301,"0003","2021-09-11"),(4,400,"0004","2021-09-11");

4.创建Hudi Cow分区表。

drop table if exists hudi_test1;
create table hudi_test1 (id int, comb long, name string, dt date) using hudi partitioned by (dt) options(type="cow",primaryKey="id", preCombineField="comb");

5.执行insert,插入数据,并查询结果。

insert into hudi_test1 values (1,100,"aaa","2021-08-28"),(2,200,"bbb","2021-08-28");
insert into hudi_test1 select 3,300,"ccc","2021-09-11";
select id,comb,dt,name from hudi_test1;

6.执行update,更新数据,并查询结果。

update hudi_test1 set name="0001" where id = 1;
select id,comb,dt,name from hudi_test1;

7.执行delete,删除数据,并查询结果。

delete from hudi_test1 where id = 2;
select id,comb,dt,name from hudi_test1;

8.执行merge,写入增量数据,并查询结果。

merge into hudi_test1 t1 using hivetb_text t2 on t1.id = t2.id
when matched then update set id=t2.id, comb=t2.comb, name="aaaa", dt=t2.dt
when not matched then insert *;
select id,comb,dt,name from hudi_test1;

好了,本期云小课就介绍到这里,快去体验MapReduce(MRS)更多功能吧!猛戳这里

 

点击关注,第一时间了解华为云新鲜技术~

原文地址:https://www.cnblogs.com/huaweiyun/archive/2022/10/28/16836575.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4600.html

(0)
上一篇 2023-06-12
下一篇 2023-06-13

相关推荐

  • SQL 入门教程:使用 WHERE 子句

    SQL 入门教程:使用 WHERE 子句目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 数据库表一般包含大量的数据,很少需要检索表中的所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件(sea

    2023-04-19
    144
  • 以Python字符串为中心的原始标题

    以Python字符串为中心的原始标题字符串是Python中最重要的数据类型之一,是文本处理中不可或缺的一环。从简单的字符串拼接到复杂的正则表达式匹配,Python中的字符串包含着丰富的操作和方法。本文将以Python字符串为中心,介绍其常见操作以及在实际开发中的应用。

    2024-05-25
    52
  • Python Keys:优雅的字典键值

    Python Keys:优雅的字典键值在Python中,字典(dictionary)是一种非常常用且方便的数据结构,它由一系列的键(key)和对应的值(value)组成。在编写代码时,我们常常需要从字典中选取特定的键或对字典进行操作。Python的字典键值相关的语法和方法提供了一些非常优雅的操作方式,本文将从多个方面进行详细阐述。

    2024-02-15
    106
  • 基于开源流批一体数据同步引擎ChunJun数据还原—DDL解析模块的实战分享[通俗易懂]

    基于开源流批一体数据同步引擎ChunJun数据还原—DDL解析模块的实战分享[通俗易懂]原文链接:基于开源流批一体数据同步引擎ChunJun数据还原—DDL解析模块的实战分享 课件获取:关注公众号** “数栈研习社”,后台私信 “ChunJun”**获得直播课件 视频回放:点击这里 Ch

    2023-05-24
    136
  • MongoDB(三):数据库操作、集合操作「建议收藏」

    MongoDB(三):数据库操作、集合操作「建议收藏」1. 数据库操作 看完前面的文章,大家应该把环境搭建好了,下面我们就开始学习MongoDB的一些基本操作了。 首先我们要了解的一些要点: MongoDB将数据存储为一个文档,数据结构由键值对(key=

    2022-12-21
    150
  • sqlserver视图和存储过程_SQL视图存储过程

    sqlserver视图和存储过程_SQL视图存储过程SQL基础随记2 视图 存储过程 View CREATE/ALTER/DROP VIEW ViewName as SELECT(…) 可以在视图的基础上继续创建视图,即,将之前创建的视图当做表名放

    2023-03-16
    141
  • Oracle基础知识[亲测有效]

    Oracle基础知识[亲测有效]1、Oracle分页查询 现有表employee_tbl,要求按年龄降序,分页查询数据,每页3条数据。 ID NAME DATE SIGNIN AGE 1 小明 2016-04-22 15:25:3…

    2023-03-24
    138
  • JDBC-用程序操作数据库「建议收藏」

    JDBC-用程序操作数据库「建议收藏」一、JDBC JDBC:Java Database Connectivity 驱动:每个数据库厂商对JDBC的接口的实现类。 二、JDBC程序的开发步骤 1、引入驱动jar 2、编写代码 三、JDB…

    2023-02-14
    155

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注