目錄
0. 相關(guān)文章鏈接
1. Bucket索引(從 0.11 開始支持)
1.1.?WITH參數(shù)
1.2.?和 state 索引的對(duì)比
2.?Hudi Catalog(從 0.12.0 開始支持)
2.1. 概述
2.2.?WITH 參數(shù)
2.3.?使用dfs方式
0. 相關(guān)文章鏈接
?Hudi文章匯總?
1. Bucket索引(從 0.11 開始支持)
????????默認(rèn)的 flink 流式寫入使用 state 存儲(chǔ)索引信息:primary key 到 fileId 的映射關(guān)系。當(dāng)數(shù)據(jù)量比較大的時(shí)候,state的存儲(chǔ)開銷可能成為瓶頸,bucket 索引通過(guò)固定的 hash 策略,將相同 key 的數(shù)據(jù)分配到同一個(gè) fileGroup 中,避免了索引的存儲(chǔ)和查詢開銷。
1.1.?WITH參數(shù)
名稱 |
Required |
默認(rèn)值 |
說(shuō)明 |
index.type |
false |
FLINK_STATE |
設(shè)置 BUCKET 開啟 Bucket 索引功能 |
hoodie.bucket.index.hash.field |
false |
主鍵 |
可以設(shè)置成主鍵的子集 |
hoodie.bucket.index.num.buckets |
false |
4 |
默認(rèn)每個(gè) partition 的 bucket 數(shù),當(dāng)前設(shè)置后則不可再變更。 |
1.2.?和 state 索引的對(duì)比
(1)bucket index 沒(méi)有 state 的存儲(chǔ)計(jì)算開銷,性能較好
(2)bucket index 無(wú)法擴(kuò) buckets,state index 則可以依據(jù)文件的大小動(dòng)態(tài)擴(kuò)容
(3)bucket index 不支持跨 partition 的變更(如果輸入是 cdc 流則沒(méi)有這個(gè)限制),state index 沒(méi)有限制
2.?Hudi Catalog(從 0.12.0 開始支持)
2.1. 概述
通過(guò) catalog 可以管理 flink 創(chuàng)建的表,避免重復(fù)建表操作,另外 hms 模式的 catalog 支持自動(dòng)補(bǔ)全 hive 同步參數(shù)。
DFS 模式 Catalog SQL樣例:
CREATE CATALOG hoodie_catalog
WITH (
'type'='hudi',
'catalog.path' = '${catalog 的默認(rèn)路徑}',
'mode'='dfs'
);
Hms 模式 Catalog SQL 樣例:
CREATE CATALOG hoodie_catalog
WITH (
'type'='hudi',
'catalog.path' = '${catalog 的默認(rèn)路徑}',
'hive.conf.dir' = '${hive-site.xml 所在的目錄}',
'mode'='hms' -- 支持 'dfs' 模式通過(guò)文件系統(tǒng)管理表屬性
);
2.2.?WITH 參數(shù)
名稱 |
Required |
默認(rèn)值 |
說(shuō)明 |
catalog.path |
true |
-- |
默認(rèn)的 catalog 根路徑,用作表路徑的自動(dòng)推導(dǎo),默認(rèn)的表路徑:${catalog.path}/${db_name}/${table_name} |
default-database |
false |
default |
默認(rèn)的 database 名 |
hive.conf.dir |
false |
-- |
hive-site.xml 所在的目錄,只在 hms 模式下生效 |
mode |
false |
dfs |
支持 hms模式通過(guò) hive 管理元數(shù)據(jù) |
table.external |
false |
false |
是否創(chuàng)建外部表,只在 hms 模式下生效 |
2.3.?使用dfs方式
步驟一:創(chuàng)建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啟動(dòng)時(shí)加載sql文件(重點(diǎn):-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
步驟三:建庫(kù)建表插入
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,重新進(jìn)入,表信息還在文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-453714.html
use test;
show tables;
select * from t2;
注:其他Hudi相關(guān)文章鏈接由此進(jìn) ->??Hudi文章匯總?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-453714.html
到了這里,關(guān)于Hudi(19):Hudi集成Flink之索引和Catalog的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!