运行paimon官网demo过程记录

运行paimon官网demo过程记录

官网demo地址:https://paimon.apache.org/docs/master/engines/flink/

步骤一:环境:ubuntu jdk1.8

sudo apt update
sudo apt install openjdk-8-jdk
java -version

步骤二:安装flink18

  1. 准备需要的文件

    image-20240109113519487

    获取连接:

    flink:https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz

    paimon:https://repo.maven.apache.org/maven2/org/apache/paimon/paimon-flink-1.18/0.6.0-incubating/paimon-flink-1.18-0.6.0-incubating.jar

    hadoop依赖:https://repo.maven.apache.org/maven2/org/apache/flink/flink-shaded-hadoop-2-uber/2.8.3-10.0/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar

    注意事项:

    • flink版本不得低于14

    • 需要使用与flink版本对应的paimon的jar包,使用了0.6版本

tar zxvf flink-1.18.0-bin-scala_2.12.tgz

2.将paimon、hadoop的jar包放入flink的lib目录

image-20240109114443063

3.修改配置文件 /conf/flink-conf.yaml,设置任务插槽

taskmanager.numberOfTaskSlots: 2

4.启动flink,访问http://localhost:8081

/bin/start-cluster.sh

image-20240109121639819

步骤三:启动sql-client,运行paimon官网demo

  1. 创建表

    --创建一个名为my_catalog的目录,并将其设置为使用paimon类型,该类型通常用于与Paimon存储库相关联。
    CREATE CATALOG my_catalog WITH (
        'type'='paimon',
        'warehouse'='file:/tmp/paimon' 
    );
    
    
    USE CATALOG my_catalog;
    
    -- create a word count table
    CREATE TABLE word_count (
        word STRING PRIMARY KEY NOT ENFORCED,--主键
        cnt BIGINT
    );
    

注:Catalogs

Catalog 提供了元数据信息,例如数据库、表、分区、视图以及数据库或其他外部系统中存储的函数和信息。

  1. 写数据(必须在流模式下) 否则报错org.apache.flink.table.api.ValidationException: Querying an unbounded table ‘my_catalog.default.word_table’ in batch mode is not allowed.

    --创建一个临时表,表名为word_table。临时表在当前数据库会话期间有效,会话结束后会被自动删除。该表包含一个列,列名为'word',数据类型为STRING。该表使用了'PRIMARY KEY'约束来指定'word'列为主键,确保每个记录的'word'值是唯一的。
    CREATE TEMPORARY TABLE word_table (
        word STRING
    ) WITH (
        'connector' = 'datagen',--阿里云数据生成器
        'fields.word.length' = '1'
    );
    
    -- write streaming data to dynamic table
    INSERT INTO word_count SELECT word, COUNT(*) FROM word_table GROUP BY word;
    
  2. 读数据

SET 'execution.runtime-mode' = 'batch';--批模式
SELECT * FROM word_count;
SET 'execution.runtime-mode' = 'streaming';--流模式
SELECT * FROM word_count;

paimon文件结构

img

使用create语言创建表后,可以在/tem/paimon/default.db/目录下看到对应于表名的目录,文件夹与paimon文件结构对应

image-20240109163517384

snapshot:快照

schema:存储表的结构

manifest file:是包含有关LSM 数据文件和更改日志文件的文件信息。

partiton:分区

bucket:桶,

data–:存储真实数据

changelog–:变更记录

补充:B+与LSM的简单对比

  • B+树针对读取进行了优化。写入B+树相对代价更高,因为它涉及随机lO,并且可能包括更新磁盘上的多个Page。

  • LSM树的工作方式不同,LSM树针对快速写入进行了优化,写入称为memtable的结构时在内存中进行批处理。

    LSM树原理:

    • memtable按对象Key排序,通常实现为平衡二叉树。
    • 当memtable达到一定大小时,它会作为不可变的排序表刷新到磁盘。SSTable按排序顺序存储Key值对。
    • 删除、更新对象也需要特殊处理,因为我们无法将SSTable中的任何内容标记为已删除。为执行删除,它会向对象Key的最新SSTable添加一个称为Tombstone marker。当我们在读取时遇到墓碑,我们知道该对象已被删除。
    • 周期性的合并和压缩过程来合并SSTables并丢弃过时或删除的值。

增删改查

insert into test values('c',1000),('d',2000);

update test set cnt=3333 where word ='a'--仅支持批模式,流模式报错 UPDATE statement is not supported for streaming mode now.
select * from test ;

image-20240109174047776

word =‘a’–仅支持批模式,流模式报错 UPDATE statement is not supported for streaming mode now.
select * from test ;


[外链图片转存中...(img-MItKi5tz-1704942621674)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ibabysit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值