【Flink SQL API体验数据湖格式之paimon】

2023-12-25 00:36

本文主要是介绍【Flink SQL API体验数据湖格式之paimon】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

随着大数据技术的普及,数据仓库的部署方式也在发生着改变,之前在部署数据仓库项目时,首先想到的是选择国外哪家公司的产品,比如:数据存储会从Oracle、SqlServer中或者Mysql中选择,ETL工具会从Informatica、DataStage或者Kettle中选择,BI报表工具会从IBM cognos、Sap Bo或者帆软中选择,基本上使用的产品组合都类似,但随着数据量的激增,之前的部署方式已经越来越不能满足业务场景,例如:不同格式的数据存储,传出的数据库无法存储,而且随着数量的增多,数据库的响应速度就会下降,并且数据大都是T+1的,往往从业务需求的提交到BI报表开发都需要一段时间,等BI报表开发后,数据的时效性大大降低,无法为业务的决策及时性提供帮助,后来随着hadoop的流行,数据仓库慢慢的就演变为以hadoop为基础存储的大数据仓库,并解决了传统数仓无法承载激增数据量的问题,并且随着计算引擎的迭代更新,现在也能实现数据的实时性和事务性,本篇就以新起之秀的数据存储方式来展开介绍。


提示:以下案例仅供参考

一、paimon是什么?

paimon是一种基于LSM形式的数据湖存储格式,与hudi、iceberg定位相同,都是一种基于对hdfs文件存储管理的技术,flink与hudi和iceberg都有做过集成,但hudi和iceberg相当于spark的功能更为完善,这些数据湖格式也都更偏向于批处理,而相对于flink来说,提供的功能相较于spark来说,没有那么完善,虽然flink针对这些方面有做过努力尝试,但结果都不太理想,于是,flink基于前者的有点,自己创造一种数据湖存储格式,其基于flink table store的基础,在结合其他开源数据湖格式的特点加以改进,于是一种新的数据湖格式paimon就诞生了,本人也是最近才开始尝试这种新的数据湖格式的一些功能,下面是基于sql api编写的一个简单的例子。

二、Fink SQL API方式编程

1.创建kafka流标

我这边是以yarn-session的方式执行的,所以首先启动的session,cd $FLINK_HOME,执行bin/yarn-session -d -nm test创建一个名称为test的session会话,随后执行bin/sql-client -s yarn-session进入sql客户端,直接使用默认的catalog和database,执行下面的DDL语句,就会在default_catalog.default_database下创建一个kafka_table表

create temporary table `kafka_table`(
`distinct_id` string,
`login_id` string,
`anonymous_id` string,
`type` string,
`event` string,
`_track_id` string,
`time` string,
`_flush_time` string,
`device_id` string,
`project_id` string,
`map_id` string,
`user_id` string,
`recv_time` string) with('connector'='kafka','topic'='event_topic','properties.group.id'='testgroup','properties.bootstrap.servers'='cdp1:9092','scan.startup.mode'='latest-offset','format'='json');

2.创建paimon append表

接着执行如下DDL语句

CREATE TABLE paimon_append (
`distinct_id` string,
`login_id` string,
`anonymous_id` string,
`type` string,
`event` string,
`_track_id` string,
`time` string,
`_flush_time` string,
`device_id` string,
`project_id` string,
`map_id` string,
`user_id` string,
`recv_time` string
) PARTITIONED BY (`distinct_id`)
WITH (
'bucket' = '-1'
);

3.数据导入

SET ‘execution.checkpointing.interval’ = ‘1 min’;
INSERT INTO paimon_append SELECT * FROM kafka_table;


总结

以上就是一个消费kafka主题数据,并每隔一定的间接直接,写入到paimon表中,paimon会对小文件数据量达到一定程度后,对文件进行压缩合并,并且paimon也支持merge into、update、以及schema evolution等功能,由于时间有限,这里就不仔细展开了,有兴趣的朋友,可以亲自尝试下,版本目标已经更新到0.7,为flink的生态状态又增加了一环,目前flink cdc 、paimon的加持、能很好的解决lamda架构数据不一致,以及kappa架构数据追溯的问题,相信随着后续版本的迭代更多强大的功能也会推出。

这篇关于【Flink SQL API体验数据湖格式之paimon】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/533683

相关文章

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE