
Iceberg
文章平均质量分 71
Iceberg基本使用和原理解析
Bulut0907
大数据、机器学习、编程语言、IT相关技术分享, 喜欢请关注、点赞、收藏哦!
展开
-
Iceberg删除过期snapshots、老的metadata files、孤立的文件,合并data files和manifests
目录1. 过期snapshots的处理2. 删除老的metadata files3. 删除孤立的文件4. 合并data files5. Rewrite manifests1. 过期snapshots的处理Iceberg表每一次write都会产生一个新的snapshot,同时也会产生一个新的version版本。所以对于流式写入,会产生大量的snapshot。因此需要将老的snapshot标记为过期。这样新生成的vN.metadata.json文件,就不会包含过期的snapshot当一个data file原创 2022-06-24 09:14:02 · 4990 阅读 · 19 评论 -
Flink CDC使用DataStream API方式同步数据到Iceberg数据湖
目录1. 背景2. 同步表情况3. 程序4. 结果说明1. 背景虽然使用SQL的方式进行同步非常方便。但是该方式,每向一个Iceberg目标表导入数据,都会向集群提交一个Application,非常消耗集群的资源通过DataStream API的方式,可以只检索Mysql的数据源一次,就可同步多个数据库的多个数据表。然后通过Flink的Side Output将数据分成多个流。然后再将多个流分别导入到不同的Iceberg表2. 同步表情况这里的示例只演示一个表的同步将Mysql的表d_geneal原创 2022-05-01 17:44:15 · 2516 阅读 · 10 评论 -
Apache Iceberg数据湖与Trino的集成
目录1. 介绍2. 配置Connector1. 介绍Trino连接Iceberg的Connector,需要通过Hive的metastore,查询每个partition的HDFS location,然后获取partition下的metadata文件信息2. 配置Connector在所有节点上新建catalog配置文件[root@bigdata001 catalog]# pwd/opt/trino-server-375/etc/catalog[root@bigdata001 catalog]#[原创 2022-04-30 22:25:58 · 2107 阅读 · 0 评论 -
【Iceberg表规范】Position Delete Files和Equality Delete Files
目录1. Position Delete Files2. Equality Delete FilesRow-level delete files也是一种date file,使用Iceberg的format、schemas、column projection列投影1. Position Delete Files包含的字段信息如下:字段ID字段名称数据类型描述2147483546 file_pathstring要删除的一行数据的data file的path,比如hdfs://原创 2022-04-30 22:23:46 · 2477 阅读 · 1 评论 -
【Iceberg表规范】Manifests(manifest files)、Snapshots和Table Metadata
目录1. Manifests(manifest files)2. Snapshots2.1 Manifest List2.2 Scan Planning2.3 Snapshot Reference快照引用3. Table Metadata1. Manifests(manifest files)manifest file也是一个data file,使用Iceberg的表format、schemas、column projection列投影一个manifest file要么指向data files,要么指原创 2022-04-28 15:32:03 · 1876 阅读 · 0 评论 -
【Iceberg表规范】Partitioning分区和Sorting排序
目录1. Partitioning分区1.1 Bucket分桶转换函数的细节1.2 Truncate截断转换函数的细节1.3 Partition Evolution分区更新2. Sorting排序1. Partitioning分区分区字段可以来自基础数据类型的字段、struct数据类型的嵌套字段。分区字段的转换函数如下所示:转换函数名描述原字段数据类型分区字段数据类型identity原字段数据值任何基础数据类型和原字段数据类型一样bucket[N]对原字段数据值按原创 2022-04-28 15:30:32 · 1945 阅读 · 0 评论 -
【Iceberg表规范】Schemas和Data Types
目录1. Column Projection列投影2. identifier-field-ids唯一字段ID3. Reserved Field IDs保留字段ID1. Column Projection列投影当一个data file没有field ids信息时,可以通过表属性schema.name-mapping.default定义一个json字段映射,为data file提供备用的field ids。json中需为每个字段提供如下信息:names: 为一个字段定义0个或多个namefield-i原创 2022-04-26 09:18:34 · 712 阅读 · 0 评论 -
【Iceberg表规范】表格式版本、系统架构、Sequence Numbers和Row-level Deletes
目录1. Format Versioning表格式版本2. Overview2.1 Sequence Numbers序列号2.2 Row-level Deletes3. Specification规范3.1 v1和v2版本的Writer和reader兼容性要求1. Format Versioning表格式版本表格式有版本1和版本2,可以通过format-version参数进行指定,默认值是1版本1: 分析型数据表使用的是不可变的文件格式:parquet、avro、orc版本2:行级更新和删除当进原创 2022-04-26 09:17:07 · 1670 阅读 · 0 评论 -
Iceberg数据湖的Schemas字段类型
目录类型描述注意点booleanTrue / falseint32-bit有符号整数能转换成long类型long64-bit有符号整数float32-bit IEEE 754浮点数能转换成double类型double64-bit IEEE 754浮点数decimal(P,S)固定位数小数; 精度为P, 小数位数为S小数位数固定,精度必须小于等于38。Schema更新时精度只能变大,不能变小date没有时区的日期ti原创 2022-04-25 09:16:14 · 1046 阅读 · 0 评论 -
Iceberg数据湖为什么快和可靠性、并行写
目录1. Performance性能2. Reliability可靠性2.1 并行写2.2 Compatibility兼容性1. Performance性能本节主要讲述Iceberg为什么查询数据很快Iceberg查询一个Snapshot的数据,先获取一个manifest list,再通过manifest list获取manifest files,最后通过manifest files获取data files。其中manifest list和manifest file储存的数据有:manifest原创 2022-04-25 09:14:43 · 917 阅读 · 0 评论 -
Iceberg数据湖的Partition分区和Schema、Partition、Sort order更新
目录1. Configuration1.1 table properties1.1.1 Read properties1.1.2 Write properties1.1.3 Table behavior properties1.1.4 Reserved table properties1.1.4 Compatibility flags1.2 Catalog properties1.2.1 Lock catalog properties1.3 Hadoop configuration1. Configura原创 2022-04-24 09:26:00 · 3541 阅读 · 0 评论 -
使用Java/Scala API对Iceberg数据湖进行snapshot快照expire过期处理
目录1. expire过期处理的作用2. 查看表snapshot-log3. expire过期程序3.1 pom.xml3.2 放置hdfs-site.xml3.3 flink_test.scala4. 运行程序5. 查看结果1. expire过期处理的作用expire过期的snapshot-id,就不会出现在新的vN.metadata.json文件中2. 查看表snapshot-log查看最新版本的vN.metadata.json,显示的snapshot-log部分如下:"snapshot-lo原创 2022-04-19 18:30:42 · 968 阅读 · 0 评论 -
使用Scala/Java对Iceberg数据湖各模块进行操作(metadata、scanning、update、transactions、types、expressions)
目录1. 表metadata API2. 表Scanning2.1 File Level2.2 Row level3. 表update操作4. Transactions5. Types数据类型5.1 基础数据类型5.2 集合数据类型6. Expressions表达式7. Iceberg各模块说明下面以Hadoop Catalog为例进行讲解1. 表metadata APIimport org.apache.hadoop.conf.Configurationimport org.apache.ic原创 2022-04-18 15:00:03 · 2813 阅读 · 4 评论 -
使用Scala/Java对Iceberg数据湖的Hive Catalog/Hadoop Catalog/HDFS Path进行表操作
目录1. Hive Catalog(创建表、加载表、重命名表、删除表)2. Hadoop Catalog(创建表、加载表、重命名表、删除表)3. 直接通过HDFS Path创建、加载、删除Hadoop Catalog表4. Iceberg Scala/Java API的使用4.1 表metadata API4.2 表Scanning4.2.1 File Level4.2.2 Row level4.3 表update操作4.4 Transactions4.6 Types数据类型4.6.1 基础数据类型4.6.原创 2022-04-14 09:39:24 · 3214 阅读 · 4 评论 -
Iceberg数据湖的Table、Catalog、Hadoop配置Configuration
目录1. Configuration1.1 table properties1.1.1 Read properties1.1.2 Write properties1.1.3 Table behavior properties1.1.4 Reserved table properties1.1.4 Compatibility flags1.2 Catalog properties1.2.1 Lock catalog properties1.3 Hadoop configuration1. Configura原创 2022-04-12 10:20:20 · 2439 阅读 · 0 评论 -
使用Hive3.1.2 + Iceberg0.13.1构建数据湖
目录1. Hive开启Iceberg的支持2. Catalog管理3. 表的创建和删除1. Hive开启Iceberg的支持Hive可以读写Iceberg的表添加依赖jar包[root@hive1 ~]# [root@hive1 ~]# wget https://repo.maven.apache.org/maven2/org/apache/iceberg/iceberg-hive-runtime/0.13.1/iceberg-hive-runtime-0.13.1.jar[root@hive1原创 2022-04-11 09:35:05 · 3212 阅读 · 0 评论 -
Flink Iceberg Connector
目录create table test(…) with (‘connector’ = ‘iceberg’, …)在Flink的当前Catalog(默认为GenericInMemoryCatalog)中,创建一个和Iceberg表对应的表映射create temporary table my_user(user_id bigint,user_name string,birthday date,country string) with ('connector'='iceberg','cata原创 2022-04-08 17:50:49 · 789 阅读 · 0 评论 -
Flink重写Iceberg数据湖小文件变大文件
1. 重写小文件变大文件Flink支持Batch任务,将iceberg表的小文件重写成大文件合并前HDFS的metadata和data目录文件如下:[root@flink1 ~]# [root@flink1 ~]# hadoop fs -ls hdfs://nnha/user/iceberg/warehouse/iceberg_db/my_user/metadataFound 17 items-rw-r--r-- 1 root supergroup 6493 2022-02-13原创 2022-03-30 09:20:05 · 1141 阅读 · 1 评论 -
使用Flink1.14 + Iceberg0.13构建数据湖
目录 1. Flink SQL Client配置Iceberg 2. Catalog 2.1 Hive Catalog 2.2 HDFS Catalog 3. 数据库和表相关DDL命令 3.1 创建数据库 3.2 创建表(不支持primary key等) 3.3 修改表 3.4 删除表 4. 插入数据到表 4.1 insert into 4.2原创 2022-03-29 09:21:11 · 2160 阅读 · 4 评论