【大数据】Hudi HMS Catalog 完全使用指南

这篇具有很好参考价值的文章主要介绍了【大数据】Hudi HMS Catalog 完全使用指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.Hudi HMS Catalog 基本介绍

功能亮点:当 Flink 和 Spark 同时接入 Hive MetastoreHMS)时,用 Hive Metastore 对 Hudi 的元数据进行管理,无论是使用 Flink 还是 Spark 引擎建表,另外一种引擎或者 Hive 都可以直接查询。

本文以 HDP 集群为例,其他版本分别为:

  • Flink:1.13.6
  • Spark:3.2.1
  • Hudi:0.12.0

在 HDP 集群中,Hive 的配置文件路径为 /etc/hive/conf,所以在 Flink SQL Client 中使用 Hive 的配置文件来创建 hudi-hive catalog,从而将 Hudi 元数据存储于 hive metastore 中。

2.在 Flink 中写入数据

在 Flink SQL Client 中进行如下操作:

create catalog hudi with(
	'type' = 'hudi',
	'mode' = 'hms',
	'hive.conf.dir'='/etc/hive/conf'
);

--- 创建数据库供hudi使用
create database hudi.hudidb;

Flink SQL Client 中建表:

--- order表
CREATE TABLE hudi.hudidb.orders_hudi(
  uuid INT,
  ts INT,
  num INT,
  PRIMARY KEY(uuid) NOT ENFORCED
) WITH (
  'connector' = 'hudi',
  'table.type' = 'MERGE_ON_READ',
  'hive_sync.conf.dir' = '/etc/hive/conf' --如果hive是配置了Kerberos,必须指定
);

--- product表
CREATE TABLE hudi.hudidb.product_hudi(
  uuid INT,
  ts INT,
  name STRING,
  PRIMARY KEY(uuid) NOT ENFORCED
) WITH (
  'connector' = 'hudi',
  'table.type' = 'MERGE_ON_READ',
  'hive_sync.conf.dir' = '/etc/hive/conf' 
);

--- 宽表
CREATE TABLE hudi.hudidb.orders_product_hudi(
  uuid INT,
  ts INT,
  name STRING,
  num INT,
  PRIMARY KEY(uuid) NOT ENFORCED
) WITH (
  'connector' = 'hudi',
  'table.type' = 'MERGE_ON_READ',
  'hive_sync.conf.dir' = '/etc/hive/conf'
);

使用 Flink SQL 进行数据写入:

insert into hudi.hudidb.orders_hudi values
  (1, 1, 2),
  (2, 2, 3),
  (3, 3, 4);
  
insert into hudi.hudidb.product_hudi values
  (1, 1, 'tony'),
  (2, 2, 'mike'),
  (3, 3, 'funny');

insert into hudi.hudidb.orders_product_hudi
select
  hudi.hudidb.orders_hudi.uuid as uuid,
  hudi.hudidb.orders_hudi.ts as ts,
  hudi.hudidb.product_hudi.name as name,
  hudi.hudidb.orders_hudi.num as num
from hudi.hudidb.orders_hudi
inner join hudi.hudidb.product_hudi on hudi.hudidb.orders_hudi.uuid = hudi.hudidb.product_hudi.uuid;

3.在 Flink SQL 中查看数据

select * from hudi.hudidb.orders_hudi;

得到:

【大数据】Hudi HMS Catalog 完全使用指南,# Hudi,大数据,hudi,数据湖,hive,flink,spark,metastore

select * from hudi.hudidb.product_hudi;

得到:

【大数据】Hudi HMS Catalog 完全使用指南,# Hudi,大数据,hudi,数据湖,hive,flink,spark,metastore

select * from hudi.hudidb.orders_product_hudi;

得到:

【大数据】Hudi HMS Catalog 完全使用指南,# Hudi,大数据,hudi,数据湖,hive,flink,spark,metastore

4.在 Spark 中查看数据

Hive 为了连接集群 Hive Metastore,只需要将 Hive 的配置文件 hive-site.xml 放置到 Spark 的配置文件目录即可。

通过 beeline 连接 spark thriftserver,查看数据库:

show databases;

【大数据】Hudi HMS Catalog 完全使用指南,# Hudi,大数据,hudi,数据湖,hive,flink,spark,metastore

可以看到刚刚在 Flink 中创建的 hudidb 数据库。现在查看里面的表:

use hudidb;
show tables;

【大数据】Hudi HMS Catalog 完全使用指南,# Hudi,大数据,hudi,数据湖,hive,flink,spark,metastore
由于在将数据写入 Hudi 时,默认会新增 _hoodie_commit_time_hoodie_record_keyprecombine 以及 _hoodie_file_name 用于内部使用,如果使用 select * 进行查询时会查出上述字段。

以查看 orders_hudi 表数据为例:

select * from orders_hudi;

【大数据】Hudi HMS Catalog 完全使用指南,# Hudi,大数据,hudi,数据湖,hive,flink,spark,metastore
所以为了正确查询,需要指定字段:

select uuid, ts, num from orders_hudi;

【大数据】Hudi HMS Catalog 完全使用指南,# Hudi,大数据,hudi,数据湖,hive,flink,spark,metastore

5.在 Hive 中查看数据

Hudi MOR 表在将元数据同步到 Hive 时,会同时生成以 _ro_rt 结尾的两张子表。例如有一张表名称为 product_hudi,那么此时,数据库中会有三张和 product_hudi 相关的表,分别为原始 product_hudi 表、product_hudi_roproduct_hudi_rt

  • ro 表表示读优化(read-optimized)查询,只查询 MOR 表中的 parquet 文件部分。
  • rt 表表示快照(real-time,实时)查询,查询全表,该操作需要合并 avroparquet 文件,较为耗时。
  • product_hudi 表用于 Flink 或者 Spark 的元数据管理。

为了在 Hive 引擎中查看,对于 MERGE_ON_READ 表,至少需要执行过一次压缩,也就是把 avro 文件压缩为 parquet 文件,才能够正常查看数据。由于上述操作为批量操作,默认是不会触发压缩操作的,所以需要手动触发压缩(该操作 master 分支会支持)。

所以对 product_hudi 表进行手动压缩

./bin/flink run -c \
org.apache.hudi.sink.compact.HoodieFlinkCompactor \
lib/hudi-flink1.13-bundle_2.12-0.12.0.jar \
--path hdfs://bigdata:8020/warehouse/tablespace/managed/hive/hudidb.db/product_hudi \
--schedule

注意:如果是使用 Flink 将数据实时流式写入 Hudi 的话,默认在写入五次时会自动触发压缩,不需要手动执行。

为了在 Hive 中查看 Hudi 所有数据,需要设置如下参数:

set hive.input.format = org.apache.hadoop.hive.ql.io.HiveInputFormat;

如果设置该参数出现如下报错:

Error: Error while processing statement: Cannot modify hive.input.format at runtime. It is not in list of params that are allowed to be modified at runtime (state=42000,code=1)

那么通过如下方式修改 hive-site.xml 配置,新增如下配置,然后重启 Hive 即可。

hive.security.authorization.sqlstd.confwhitelist.append = hive.input.format

【大数据】Hudi HMS Catalog 完全使用指南,# Hudi,大数据,hudi,数据湖,hive,flink,spark,metastore
进入 Hive 客户端

设置变量:

set hive.input.format = org.apache.hadoop.hive.ql.io.HiveInputFormat;

查看数据库:

show databases;

【大数据】Hudi HMS Catalog 完全使用指南,# Hudi,大数据,hudi,数据湖,hive,flink,spark,metastore

查看 hudidb 库中 product_hudi 表数据:

select * from hudidb.product_hudi;

【大数据】Hudi HMS Catalog 完全使用指南,# Hudi,大数据,hudi,数据湖,hive,flink,spark,metastore文章来源地址https://www.toymoban.com/news/detail-796773.html

到了这里,关于【大数据】Hudi HMS Catalog 完全使用指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1、Git使用不完全指南:GitHub的使用详解

    GitHub 是一个以开源为基础的社交化编程平台,开发者可以在上面分享代码、协同开发、交流等。下面我们来讲一下如何使用 GitHub。 注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料 ,将在公众号 CTO Plus 发布,请关注公众号: CTO Plus 首先,我

    2023年04月10日
    浏览(34)
  • API测试之Postman使用完全指南

    Postman是一个可扩展的API开发和测试协同平台工具,可以快速集成到CI/CD管道中。旨在简化测试和开发中的API工作流。 Postman 工具有 Chrome 扩展和独立客户端,推荐安装独立客户端。 Postman 有个 workspace 的概念,workspace 分 personal 和 team 类型。Personal workspace 只能自己查看的 API,

    2024年02月04日
    浏览(31)
  • Postman:API测试之Postman使用完全指南

    Postman 是一个可扩展的 API 开发和测试协同平台工具,可以快速集成到 CI/CD 管道中。旨在简化测试和开发中的 API 工作流。 Postman 工具有 Chrome 扩展和独立客户端,推荐安装独立客户端。 Postman 有个 workspace 的概念, workspace 分 personal 和 team 类型。 Personal workspace 只能自己查看的

    2024年02月04日
    浏览(43)
  • Hudi系列15:Hudi元数据同步到Hive

    使用DataSource writer或HoodieDeltaStreamer写入数据支持将表的最新模式同步到Hive metastore,这样查询就可以获得新的列和分区。在这种情况下,最好从命令行或在一个独立的jvm中运行,Hudi提供了一个HiveSyncTool,一旦你构建了Hudi -hive模块,就可以如下所示调用它。以下是我们如何同步

    2024年02月02日
    浏览(32)
  • 探索在Apache SeaTunnel上使用Hudi连接器,高效管理大数据的技术

    Apache Hudi是一个数据湖处理框架,通过提供简单的方式来进行数据的插入、更新和删除操作,Hudi能够帮助数据工程师和科学家更高效地处理大数据,并支持实时查询。 Spark Flink SeaTunnel Zeta 批处理 流处理 精确一次性 列投影 并行处理 支持用户自定义切分 Hudi Source 连接器专为从

    2024年04月28日
    浏览(34)
  • chrome V3插件入门到放弃,Plasmo不完全使用指南

    没有插件的浏览器是没有灵魂的。今天来近距离感受一下chrome的灵魂 开始之前了解一下 灵魂 chrome插件的版本。 Chrome 浏览器从88版本开始支持MV3啦(即Manifest Version 3),现在浏览器版本都100+了。而MV2(即Manifest Version 2)将会在2023年 退休 。所以今天要讲的就是MV3版本 后续的

    2024年02月08日
    浏览(30)
  • 新机开荒攻略及新手电脑使用指南不完全手册:Windows 电脑

    介绍一下 Windows 的新机开荒、使用指南、软件推荐。 如果您没接触过电脑请先于 Bilibili 搜索零基础电脑入门教学,学习电脑基本操作。 我这里介绍的内容较多,有些功能的作用也不是必须,所以您可以酌情学习。 卸载多余的无用UWP应用 您可以使用 Geek Uninstaller工具卸载不需

    2024年02月04日
    浏览(37)
  • Unity中使用AVPro Video播放视频的完全指南

    Unity AVPro是一款强大的视频播放解决方案,它支持多种视频格式和编解码器,能够在Unity中实现高质量的视频播放。本教程将指导你如何在Unity项目中使用AVPro播放视频。 1、安装AVPro Video 2、在UI上显示视频 3、在3D物体上显示视频,介绍两种播放到物体的方法 4、编写脚本,用按

    2024年04月16日
    浏览(43)
  • chatgpt赋能python:使用Python创建结构体:完全指南

    在Python编程领域,结构体是一种非常方便和有用的数据类型,用于存储和组织相关变量。在本篇文章中,我们将讨论如何使用Python创建结构体。让我们开始吧! 结构体是将多个变量打包在一起的一种数据类型。通常,它们在C和C++等编程语言中使用,用于创建自定义数据类型

    2024年02月07日
    浏览(50)
  • 02_快速体验 Hudi、编译 Hudi、安装HDFS、安装Spark 3.x、模拟数据、插入数据、查询数据、.hoodie文件、数据文件、Hudi 数据存储概述、Metadata 元数据等

    本文来自\\\"黑马程序员\\\"hudi课程 2.第二章 快速体验 Hudi 2.1 编译 Hudi 2.1.1 第一步、Maven 安装 2.1.2 第二步、下载源码包 2.1.3 第三步、添加Maven镜像 2.1.4 第四步、执行编译命令 2.1.5 第五步、Hudi CLI测试 2.2 环境准备 2.2.1 安装HDFS 2.2.2 安装Spark 3.x 2.3 spark-shell 使用 2.3.1 启动spark-shell

    2024年02月04日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包