IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> iceberg - checklist 清单 -> 正文阅读

[大数据]iceberg - checklist 清单

iceberg调研checklist清单
序号功能点问题现象解决方案结论是否解决
1iceberg在Hive、Spark、Flink 中ddl 基本操作表1.SQL的方式分在hive建表在spark,flink中查看、操作不了;
2.SQL的方式分spark或者flink建 表在hive中查看、操作不了;
1.hive建表中要添加 ROW FORMAT SERDE
? 'org.apache.iceberg.mr.hive.HiveIcebergSerDe'
STORED BY
? 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler' ;
同时 在TBLPROPERTIES? 中配置 'engine.hive.enabled' = 'true';
1.各引擎中dll 操作表略有不同,
支持hive操作的要注意配置指定项;
2.spark 中ddl 操作丰富一些,支持力度高
?是
2catalog 引用1.进入库中,iceberg表与hive 表同时查看不了1.注册hive的catalog ,同时也注册iceberg表的catalog,
切换到hive的catalog 使用show tables 可以同时看到hive表
和iceberg 表
1.catalog 类型不同,使用的表的时候最好要写全名称
即 catalog.database.table
3隐藏分区1.spark建表隐藏分区表,hive 与flink 看不了1.隐藏分区只能在spark中建立,hive,flink不支持,使用的时候icerberg 表自动权限条件进行筛选1.隐藏分区一般用在时间上,使用相对应的时间转换函数
进行转换
4Metadata/metadata.json 文件过多1.每次checkpoint 都会会产一个新的文件,导致metadata.json过多1.配置 'write.distribution-mode'='hash',
'write.metadata.delete-after-commit.enabled'='true',
'write.metadata.previous-versions-max'='5', 保持最近5个,加上正在使用的,一共能看到6个,这个数字可配置
1.0.11版本后可以实现自动合并
5Metadata/snap.avro? 快照过期1.每次checkpoint 都会会产一个新的快照,根据官方文档发现只能
手动执行Spark 或者Flink 的java API 才能设置过期,想看看能不能t和metadata.json 一样,通过配置实现自动清理
1.暂时没有发现自动设置过期快照,目前只能通过 java API的方式
实现,指定时间戳
自动设置过期功能期待中
6data 小文件过多合并清理删除1.每次checkpoint 都会会产一个新的文件,导致数据小文件过多,
通过java API可以实现合并,定期删除孤文件,根据业务时间进行的分区,发现有操作分区,删除不掉孤文件;
2.如果快照时间过期设置比较靠近当时快照,在执行合并和删除孤文件,有可能会导致 程序报错,流写入程序也报错的情况
1.发生此现象是由于 合并文件中间的时间差过短,短时间内执行合并操作,发现并无变化,隔长时间段再次合并,如果发现合并后产生的新的文件,那么就可以清理掉
2.如果不指定时间,默认会删除3天前的孤文件,如果指定了时间,离快照比较近,因为是流式入湖的流式数据,和压缩合并程序在同时操作一个表,如果该程序在删除无用文件的同时,其他两个程序很有可能正在读取或者写入,这样会导致删除了一些元数据文件,两程序会报错
设定快照过期的时间之前的文件 才能形成孤文件,才能被删除
7v1 v2 表流读流写1.v1表支持流读流写,v2支持流写,不支持流读
2.v1数据是 append 的不是 change log stream , 导致过多的无用数据
3.v2 是支持 upsert ,操作,却不支持下游流读,形成不了pipeline
1.目前尝试spark merge into 方案,在验证中spark merge into 最终生成的是overwrite 操作,overwrite 不能流读,所以结论就是 流表 只做append , change log stream 只能做结果表
8表中时间的读取1.flink建表字段,timestamp 在spark 中查无法查看1.flink timestamp 分有时区与无时区的概念,spark查看,
需要配置 set `spark.sql.iceberg.handle-timestamp-without-timezone`=true;?
flink与spark时间字段略有不同,细节问题
9flink读流表1.直接读取发现是批读1.flink 默认是批读,流读要指定参数
SET execution.type = streaming ;
SET table.dynamic-table-options.enabled=true;
select * from sample_stream_test01 /*+ OPTIONS('streaming'='true', 'monitor-interval'='1s')*/? ;
注意官方API
10flink流kafka表写入到iceberg表1.正常提交任务,任务也很正常,有数据byte流动,,iceberg表中却无数据1.设置checkpoint点,才能正常写入iceberg 必须得设置checkpoint
11spark 代码 流读表1.sparkspark.readStream.format("kafka"),
df.writeStream.format("console")
?.trigger(Trigger.ProcessingTime("2 seconds"))
打印不出来数据
1.一定要设置.option("checkpointLocation", "~/tmp/ll") 路径,
路径根据实际情况是否写本地,或者 hdfs
1.如果发现也都设置了还是没有执行不了,
可手动 删除 指定路径
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:58:25  更:2022-05-10 12:00:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:28:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码