当前位置:网站首页>实践数据湖iceberg 第三十七课 kakfa写入iceberg的 icberg表的 enfource ,not enfource测试
实践数据湖iceberg 第三十七课 kakfa写入iceberg的 icberg表的 enfource ,not enfource测试
2022-07-23 20:01:00 【*星星之火*】
系列文章目录
实践数据湖iceberg 第一课 入门
实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式
实践数据湖iceberg 第三课 在sqlclient中,以sql方式从kafka读数据到iceberg
实践数据湖iceberg 第四课 在sqlclient中,以sql方式从kafka读数据到iceberg(升级版本到flink1.12.7)
实践数据湖iceberg 第五课 hive catalog特点
实践数据湖iceberg 第六课 从kafka写入到iceberg失败问题 解决
实践数据湖iceberg 第七课 实时写入到iceberg
实践数据湖iceberg 第八课 hive与iceberg集成
实践数据湖iceberg 第九课 合并小文件
实践数据湖iceberg 第十课 快照删除
实践数据湖iceberg 第十一课 测试分区表完整流程(造数、建表、合并、删快照)
实践数据湖iceberg 第十二课 catalog是什么
实践数据湖iceberg 第十三课 metadata比数据文件大很多倍的问题
实践数据湖iceberg 第十四课 元数据合并(解决元数据随时间增加而元数据膨胀的问题)
实践数据湖iceberg 第十五课 spark安装与集成iceberg(jersey包冲突)
实践数据湖iceberg 第十六课 通过spark3打开iceberg的认知之门
实践数据湖iceberg 第十七课 hadoop2.7,spark3 on yarn运行iceberg配置
实践数据湖iceberg 第十八课 多种客户端与iceberg交互启动命令(常用命令)
实践数据湖iceberg 第十九课 flink count iceberg,无结果问题
实践数据湖iceberg 第二十课 flink + iceberg CDC场景(版本问题,测试失败)
实践数据湖iceberg 第二十一课 flink1.13.5 + iceberg0.131 CDC(测试成功INSERT,变更操作失败)
实践数据湖iceberg 第二十二课 flink1.13.5 + iceberg0.131 CDC(CRUD测试成功)
实践数据湖iceberg 第二十三课 flink-sql从checkpoint重启
实践数据湖iceberg 第二十四课 iceberg元数据详细解析
实践数据湖iceberg 第二十五课 后台运行flink sql 增删改的效果
实践数据湖iceberg 第二十六课 checkpoint设置方法
实践数据湖iceberg 第二十七课 flink cdc 测试程序故障重启:能从上次checkpoint点继续工作
实践数据湖iceberg 第二十八课 把公有仓库上不存在的包部署到本地仓库
实践数据湖iceberg 第二十九课 如何优雅高效获取flink的jobId
实践数据湖iceberg 第三十课 mysql->iceberg,不同客户端有时区问题
实践数据湖iceberg 第三十一课 使用github的flink-streaming-platform-web工具,管理flink任务流,测试cdc重启场景
实践数据湖iceberg 第三十二课 DDL语句通过hive catalog持久化方法
实践数据湖iceberg 第三十三课 升级flink到1.14,自带functioin支持json函数
实践数据湖iceberg 第三十四课 基于数据湖icerberg的流批一体架构-流架构测试
实践数据湖iceberg 第三十五课 基于数据湖icerberg的流批一体架构–测试增量读是读全量还是仅读增量
实践数据湖iceberg 第三十六课 基于数据湖icerberg的流批一体架构–update mysql select from icberg语法是增量更新测试
实践数据湖iceberg 第三十七课 kakfa写入iceberg的 icberg表的 enfource ,not enfource测试
实践数据湖iceberg 更多的内容目录
前言
测试 iceberg读取kafka的数据,能否根据kafka上的id,入湖时,自动更新iceberg的数据,对这个场景进行测试
测试结果:不能
一、测试思路
从kafka制造数据写入iceberg,iceberg设置pk时,观察是追加写入还是更新。
二、测试not enforced代码
2.1 测试代码
测试思路: 1. select from kafka
2. insert to iceberg
代码如下:
CREATE TABLE IF NOT EXISTS KafkaTableTest2_XXZH (
`id` bigint,
`data` STRING
) WITH (
'connector' = 'kafka',
'topic' = 'test2_xxzh',
'properties.bootstrap.servers' = 'hadoop101:9092,hadoop102:9092,hadoop103:9092',
'properties.group.id' = 'testGroup',
'scan.startup.mode' = 'latest-offset',
'csv.ignore-parse-errors'='true',
'format' = 'csv'
);
CREATE CATALOG hive_iceberg_catalog WITH (
'type'='iceberg',
'catalog-type'='hive',
'uri'='thrift://hadoop101:9083',
'clients'='5',
'property-version'='1',
'warehouse'='hdfs:///user/hive/warehouse/hive_iceberg_catalog'
);
use catalog hive_iceberg_catalog;
CREATE TABLE IF NOT EXISTS ods_base.IcebergTest2_XXZH (
`id` bigint,
`data` STRING,
primary key (id) not enforced
)with(
'write.metadata.delete-after-commit.enabled'='true',
'write.metadata.previous-versions-max'='5',
'format-version'='2'
);
insert into hive_iceberg_catalog.ods_base.IcebergTest2_XXZH select * from default_catalog.default_database.KafkaTableTest2_XXZH;
2.2 制造数据
[[email protected] conf]# kafka-console-producer.sh --broker-list hadoop101:9092,hadoop102:9092,hadoop103:9092 --topic test2_xxzh
>1,abc
[2022-07-22 14:55:51,643] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 3 : {
test2_xxzh=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
>2,bb
>3,cc
>4,dd
>5,ee
>3,cccc
>6,666
>4,ddddd
>
2.3 运行结果
spark-sql (default)> select * from ods_base.IcebergTest2_XXZH;
22/07/22 15:12:28 WARN HiveConf: HiveConf of name hive.metastore.event.db.notification.api.auth does not exist
id data
3 cc
4 ddddd
5 ee
3 cccc
6 666
4 dd
Time taken: 0.405 seconds, Fetched 6 row(s)
flink-sql的运行结果:
2.4 运行结论
无法根据kafka声明的pk对iceberg进行更新。 iceberg是追加的模式写入的。
三、 改为enforce,报错
3.1 测试代码
iceberg表的pk 改为enforced,重跑
Flink SQL> CREATE TABLE IF NOT EXISTS KafkaTableTest3_XXZH (
> `id` bigint,
> `data` STRING
> ) WITH (
> 'connector' = 'kafka',
> 'topic' = 'test2_xxzh',
> 'properties.bootstrap.servers' = 'hadoop101:9092,hadoop102:9092,hadoop103:9092',
> 'properties.group.id' = 'testGroup',
> 'scan.startup.mode' = 'latest-offset',
> 'csv.ignore-parse-errors'='true',
> 'format' = 'csv'
> );
>
[INFO] Execute statement succeed.
Flink SQL> CREATE CATALOG hive_iceberg_catalog WITH (
> 'type'='iceberg',
> 'catalog-type'='hive',
> 'uri'='thrift://hadoop101:9083',
> 'clients'='5',
> 'property-version'='1',
> 'warehouse'='hdfs:///user/hive/warehouse/hive_iceberg_catalog'
> );
[INFO] Execute statement succeed.
Flink SQL> use catalog hive_iceberg_catalog;
[INFO] Execute statement succeed.
Flink SQL> CREATE TABLE IF NOT EXISTS ods_base.IcebergTest3_XXZH (
> `id` bigint,
> `data` STRING,
> primary key (id) enforced
> )with(
> 'write.metadata.delete-after-commit.enabled'='true',
> 'write.metadata.previous-versions-max'='5',
> 'format-version'='2'
> );
[ERROR] Could not execute SQL statement. Reason:
org.apache.flink.table.api.ValidationException: Flink doesn't support ENFORCED mode for PRIMARY KEY constraint. ENFORCED/NOT ENFORCED controls if the constraint checks are performed on the incoming/outgoing data. Flink does not own the data therefore the only supported mode is the NOT ENFORCED mode
报错信息:
org.apache.flink.table.api.ValidationException: Flink doesn’t support ENFORCED mode for PRIMARY KEY constraint. ENFORCED/NOT ENFORCED controls if the constraint checks are performed on the incoming/outgoing data. Flink does not own the data therefore the only supported mode is the NOT ENFORCED mode
flink没有自己拥有这些数据,所以只支持的模式是非强值的。
运行结果:
结论: iceberg是没有进行根据pk对数据进行update
总结
iceberg对从kafka流入的数据,是追加写的。
边栏推荐
- shell脚本中$#、$*、[email protected]、$?、$0等含义一文搞懂
- next数值型数据类型()出现输入错误后,下次依然能正常输入
- 种树最好的是现在
- Failure after reinstalling the system (error: Reboot and select proper boot device or insert boot media in selected boot device)
- 如何合理地估算线程池大小
- Model loading of assimp Library under QT
- 17. Life cycle
- Adobe Acrobat two powerful plug-ins
- 今日睡眠质量记录81分
- Win11没有Word文档怎么办?Win11没有Word文档解决教程
猜你喜欢

Atelier macoll - notes de développement de la secte de l'ours 2
![[development experience] development project trample pit collection [continuous update]](/img/02/7bea3bf09e9a27b6ab74399639f197.png)
[development experience] development project trample pit collection [continuous update]

Dokcer image understanding

solidworkd学习笔记:草图几何关系及编辑

QT下assimp库的模型加载

梅科尔工作室-小熊派开发笔记3

AtCoder——Subtree K-th Max

源启数字化:既有模式,还是开源创新?|砺夏行动

选择大于努力!贵阳校区小哥哥0基础成功转行软件测试收获12K!

BM14 链表的奇偶重排
随机推荐
MongoDB-查询语句中逻辑运算符not、and、or、nor用法介绍
从ACL 2022 Onsite经历看NLP热点
Meiker Studio - Huawei 14 day Hongmeng equipment development practical notes 5
JDK installation package and MySQL installation package sorting
梅科尔工作室-小熊派开发笔记3
源启数字化:既有模式,还是开源创新?|砺夏行动
Data warehouse 4.0 notes - data warehouse environment construction - DataGrid preparation and data preparation
安装svn 汉化包 也不能设置中文[通俗易懂]
phar反序列化
Relevant interfaces of [asp.net core] option mode
AtCoder B - Pizza
平安证券低佣金开户链接安全吗,怎么办理低佣金
The numerical sequence caused by the PostgreSQL sequence cache parameter is discontinuous with interval gap
链表——203. 移除链表元素
多子系统多业务模块的复杂数据处理——基于指令集物联网操作系统的项目开发实践
Leetcode 151. invert words in strings
Use tinkerpop framework to add, delete, modify and check GDB
百度地图数据可视化
牛客C基础题练习
数组——704. 二分查找