Hudi(19):Hudi集成Flink之索引和Catalog

这篇具有很好参考价值的文章主要介绍了Hudi(19):Hudi集成Flink之索引和Catalog。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

0. 相关文章链接

1. Bucket索引(从 0.11 开始支持)

1.1. WITH参数

1.2. 和 state 索引的对比

2. Hudi Catalog(从 0.12.0 开始支持)

2.1. 概述

2.2. WITH 参数

2.3. 使用dfs方式


0. 相关文章链接

 Hudi文章汇总 

1. Bucket索引(从 0.11 开始支持)

        默认的 flink 流式写入使用 state 存储索引信息:primary key 到 fileId 的映射关系。当数据量比较大的时候,state的存储开销可能成为瓶颈,bucket 索引通过固定的 hash 策略,将相同 key 的数据分配到同一个 fileGroup 中,避免了索引的存储和查询开销。

1.1. WITH参数

名称

Required

默认值

说明

index.type

false

FLINK_STATE

设置 BUCKET 开启 Bucket 索引功能

hoodie.bucket.index.hash.field

false

主键

可以设置成主键的子集

hoodie.bucket.index.num.buckets

false

4

默认每个 partition bucket 数,当前设置后则不可再变更。

1.2. 和 state 索引的对比

(1)bucket index 没有 state 的存储计算开销,性能较好
(2)bucket index 无法扩 buckets,state index 则可以依据文件的大小动态扩容
(3)bucket index 不支持跨 partition 的变更(如果输入是 cdc 流则没有这个限制),state index 没有限制

2. Hudi Catalog(从 0.12.0 开始支持)

2.1. 概述

通过 catalog 可以管理 flink 创建的表,避免重复建表操作,另外 hms 模式的 catalog 支持自动补全 hive 同步参数。

DFS 模式 Catalog SQL样例:

CREATE CATALOG hoodie_catalog
  WITH (
    'type'='hudi',
    'catalog.path' = '${catalog 的默认路径}',
    'mode'='dfs' 
  );

Hms 模式 Catalog SQL 样例:

CREATE CATALOG hoodie_catalog
  WITH (
    'type'='hudi',
    'catalog.path' = '${catalog 的默认路径}',
    'hive.conf.dir' = '${hive-site.xml 所在的目录}',
    'mode'='hms' -- 支持 'dfs' 模式通过文件系统管理表属性
  );

2.2. WITH 参数

名称

Required

默认值

说明

catalog.path

true

--

默认的 catalog 根路径,用作表路径的自动推导,默认的表路径:${catalog.path}/${db_name}/${table_name}

default-database

false

default

默认的 database

hive.conf.dir

false

--

hive-site.xml 所在的目录,只在 hms 模式下生效

mode

false

dfs

支持 hms模式通过 hive 管理元数据

table.external

false

false

是否创建外部表,只在 hms 模式下生效

2.3. 使用dfs方式

步骤一:创建sql-client初始化sql文件

vim /opt/module/flink-1.13.6/conf/sql-client-init.sql

CREATE CATALOG hoodie_catalog
  WITH (
    'type'='hudi',
    'catalog.path' = '/tmp/hudi_catalog',
    'mode'='dfs' 
  );

USE CATALOG hoodie_catalog;

步骤二:指定sql-client启动时加载sql文件(重点:-i conf/sql-client-init.sql

hadoop fs -mkdir /tmp/hudi_catalog

bin/sql-client.sh embedded -i conf/sql-client-init.sql -s yarn-session

步骤三:建库建表插入

create database test;
use test;

create table t2(
  uuid varchar(20),
  name varchar(10),
  age int,
  ts timestamp(3),
  `partition` varchar(20),
primary key (uuid) not enforced
)
with (
  'connector' = 'hudi',
  'path' = '/tmp/hudi_catalog/default/t2',
  'table.type' = 'MERGE_ON_READ'
);

insert into t2 values('1','zs',18,TIMESTAMP '1970-01-01 00:00:01','a');

步骤四:退出sql-client,重新进入,表信息还在

use test;
show tables;
select * from t2;

注:其他Hudi相关文章链接由此进 ->  Hudi文章汇总 文章来源地址https://www.toymoban.com/news/detail-453714.html


到了这里,关于Hudi(19):Hudi集成Flink之索引和Catalog的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Flink集成Hive之Hive Catalog

    流程流程: Flink消费Kafka,逻辑处理后将实时流转换为表视图,利用HiveCataLog创建Hive表,将实时流 表insert进Hive,注意分区时间字段需要为 yyyy-MM-dd形式,否则抛出异常:java.time.format.DateTimeParseException: Text \\\'20240111\\\' could not be parsed 写入到hive分区表 streamEnv需要开启checkpoint,保证flink写入

    2024年01月16日
    浏览(30)
  • Hudi(16):Hudi集成Flink之读取方式

    目录 0. 相关文章链接 1. 流读(Streaming Query) 2. 增量读取(Incremental Query) 3. 限流  Hudi文章汇总          当前表默认是快照读取,即读取最新的全量快照数据并一次性返回。通过参数read.streaming.enabled 参数开启流读模式,通过 read.start-commit 参数指定起始消费位置,支

    2024年02月06日
    浏览(67)
  • Hudi(17):Hudi集成Flink之写入方式

    目录 0. 相关文章链接 1. CDC 数据同步 1.1. 准备MySQL表 1.2. flink读取mysql binlog并写入kafka 1.3. flink读取kafka数据并写入hudi数据湖 1.4. 使用datafaker插入数据 1.5. 统计数据入Hudi情况 1.6. 实时查看数据入湖情况 2. 离线批量导入 2.1. 原理 2.2. WITH 参数 2.3. 案例 3. 全量接增量 3.1. 

    2024年02月05日
    浏览(40)
  • Hudi集成Flink

    安装Maven 1)上传apache-maven-3.6.3-bin.tar.gz到/opt/software目录,并解压更名 tar -zxvf apache-maven-3.6. 3 -bin.tar.gz -C /opt/module/ mv   apache -maven-3.6. 3  maven 2)添加环境变量到/etc/profile中 sudo  vim /etc/profile #MAVEN_HOME export MAVEN_HOME=/opt/module/maven export PATH=$PATH:$MAVEN_HOME/bin 3)测试安装结果 sourc

    2023年04月13日
    浏览(34)
  • Hudi(四)集成Flink(2)

            当前表 默认是快照读取 ,即读取最新的全量快照数据并一次性返回。通过参数 read.streaming.enabled 参数开启流读模式,通过 read.start-commit 参数指定起始消费位置,支持指定 earliest 从最早消费。 1、WITH参数 名称 Required 默认值 说明 read.streaming.enabled false false 设置

    2024年02月07日
    浏览(37)
  • Linux 学习目录合集【文章索引】

    前言:本内容为笔者自学笔记内容。 本文中的操作环境:腾讯云服务器:CentOS 7.6 64bit 学习阶段规划: Linux 基本操作【基本命令、vim、makefile使用等】 Linux 系统【进程:概念、控制、通信;IO基础;多线程等】 Linux 网络【网络基础、套接字编程、IO高级等】 学习集: C++ 入门

    2024年02月07日
    浏览(52)
  • 【大数据】Hudi HMS Catalog 完全使用指南

    功能亮点:当 Flink 和 Spark 同时接入 Hive Metastore ( HMS )时,用 Hive Metastore 对 Hudi 的元数据进行管理,无论是使用 Flink 还是 Spark 引擎建表,另外一种引擎或者 Hive 都可以直接查询。 本文以 HDP 集群为例,其他版本分别为: Flink: 1.13.6 Spark: 3.2.1 Hudi: 0.12.0 在 HDP 集群中,

    2024年01月17日
    浏览(47)
  • Flink 系列文章汇总索引

    本专栏系统介绍某一知识点,并辅以具体的示例进行说明。 本专栏的文章编号可能不是顺序的,主要是因为写的时候顺序没统一,但相关的文章又引入了,所以后面就没有调整了,按照写文章的顺序进行编号。但一个专题的顺序号是统一的,不存在编号跳跃情况。 本部分介

    2024年02月03日
    浏览(44)
  • 3: [SpringData集成Elasticsearch] --- 创建索引和字段 --- 相关注解说明

    1.1.0:注意:ES 6.0.0以后ndex一个索引对应一个type(mysql 库里的表) 每个index有shard分片存储文件,相互独立。 1.1.1:@Document元注解参数和使用 — 注解使用 1.2.1:参数说明: type — 枚举类型 @Field(analyzer = “ik_max_word”,type = FieldType.Text) package org.springframework.data.elasticsearch.annotations

    2024年02月07日
    浏览(36)
  • Gradle版本目录(Version Catalog)

    “版本目录是一份依赖项列表,以依赖坐标表示,用户在构建脚本中声明依赖项时可以从中选择。” 我们可以使用版本目录将所有依赖项声明及其版本号保存在单个位置。这样,我们可以轻松地在模块和项目之间共享依赖项和版本配置列表。 有了IDE插件支持,将依赖项导入

    2024年02月09日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包