iceberg - checklist 清单
iceberg调研checklist清单 | |||||
序号 | 功能点 | 问题现象 | 解决方案 | 结论 | 是否解决 |
1 | iceberg在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 操作丰富一些,支持力度高 |
是 |
2 | catalog 引用 | 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.隐藏分区一般用在时间上,使用相对应的时间转换函数 进行转换 |
是 |
4 | Metadata/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版本后可以实现自动合并 | 是 |
5 | Metadata/snap.avro 快照过期 |
1.每次checkpoint 都会会产一个新的快照,根据官方文档发现只能 手动执行Spark 或者Flink 的java API 才能设置过期,想看看能不能t和metadata.json 一样,通过配置实现自动清理 |
1.暂时没有发现自动设置过期快照,目前只能通过 java API的方式 实现,指定时间戳 |
自动设置过期功能期待中 | 是 |
6 | data 小文件过多合并清理删除 |
1.每次checkpoint 都会会产一个新的文件,导致数据小文件过多, 通过java API可以实现合并,定期删除孤文件,根据业务时间进行的分区,发现有操作分区,删除不掉孤文件; 2.如果快照时间过期设置比较靠近当时快照,在执行合并和删除孤文件,有可能会导致 程序报错,流写入程序也报错的情况 |
1.发生此现象是由于 合并文件中间的时间差过短,短时间内执行合并操作,发现并无变化,隔长时间段再次合并,如果发现合并后产生的新的文件,那么就可以清理掉 2.如果不指定时间,默认会删除3天前的孤文件,如果指定了时间,离快照比较近,因为是流式入湖的流式数据,和压缩合并程序在同时操作一个表,如果该程序在删除无用文件的同时,其他两个程序很有可能正在读取或者写入,这样会导致删除了一些元数据文件,两程序会报错 |
设定快照过期的时间之前的文件 才能形成孤文件,才能被删除 | 是 |
7 | v1 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时间字段略有不同,细节问题 | 是 |
9 | flink读流表 | 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 | 是 |
10 | flink流kafka表写入到iceberg表 | 1.正常提交任务,任务也很正常,有数据byte流动,,iceberg表中却无数据 | 1.设置checkpoint点,才能正常写入 | iceberg 必须得设置checkpoint | 是 |
11 | spark 代码 流读表 |
1.sparkspark.readStream.format("kafka"), df.writeStream.format("console") .trigger(Trigger.ProcessingTime("2 seconds")) 打印不出来数据 |
1.一定要设置.option("checkpointLocation", "~/tmp/ll") 路径, 路径根据实际情况是否写本地,或者 hdfs |
1.如果发现也都设置了还是没有执行不了, 可手动 删除 指定路径 |
是 |
iceberg - checklist 清单相关推荐
- 如何写好方案规划设计文档,这里有一份实践清单
上一篇,<如何写好项目规划和方案设计文档>重点讲述的是撰写项目规划和方案设计文档的指导原则,要写成什么样子才能发挥它应有的价值. 具体如何做到,往往还需要实践经验和技术功底的支撑,仅仅知道 ...
- 数据湖三剑客 Hudi、Delta、Iceberg 对比
一.介绍 在构建数据湖时,也许没有比数据格式存储更具有意义的决定.其结果将对其性能.可用性和兼容性产生直接影响. 通过简单地改变数据的存储格式,我们就可以解锁新的功能,提高整个系统的性能,这很有启发意 ...
- “〜”(波浪号/波浪形/旋转)CSS选择器是什么意思?
本文翻译自:What does the "~" (tilde/squiggle/twiddle) CSS selector mean? Searching for the ~ ch ...
- 数据库如何转身云原生数据库
前言 随着互联网的发展,以及大数据时代的来临,信息数据量也呈现出迅速增长的发展趋势,越来越多企业认识到,数据不仅可以在本地存储,还可以在云端存储.而云原生数据库就是一种稳定可靠.可弹性伸缩,解决数据运 ...
- edi mysql_EDI:_数据库基础(mysql)答案_学小易找答案
[判断题]双手正面垫球时动作手臂并拢平放 [简答题]简要叙述植物化学的定义与研究内容 [其它]针对学生能力考核系统中自己负责部分完成相应的测试用例设计和缺陷报告,并提交 每个人一份(只写自己负责部分的 ...
- 嵌入式开发中的英文词汇log
Peripheral 外设.周边设备 Decrement 递减 Contact Rating 触电容量.触电额定值:触点容量的大小是反映加在触点上的电压和通过触点电流的能力,一般触点的负载不应 ...
- 华为外包项目的测试流程
华为外包项目的测试流程 作者: 网络转载 发表于: [ 2012/7/27 15:19:35 ] 如果竞标成功,项目就开始要启动了. 华为方会提供一份CRS(客户需求)和SOW(工作任务书),华为方派 ...
- 华为是怎样研发的(9)——测试
1.从进度的角度对比华为和小米的测试 上图是小米UI的一周进度图.按照小米UI每周发布的进度,周四一天的内测.我按照华为的流程怎么套都套不出来. 疑惑点在于: 1.内测是指开发人员自测试,还是测试人员 ...
- android 沙盒_我们分别测试了2020年排名前五的最佳android电视盒
android 沙盒 So once you have decided you want an android TV box. Now, all you have to do is pick from ...
最新文章
- mac 配置 php,mac如何配置php环境
- Java-J2SE专题复习
- 计算机二级考试常用代码,二级计算机VB考试常用代码(看完必过).doc
- 【Java多线程】线程优先级:优先级高,执行机会多
- 提高vivado的编译速度
- [分享]我国食品行业ERP现状及分析解决方案
- 【251】◀▶IEW-Unit16
- microsoft符合服务器加载符号的解决方案
- Excel 如何使多组数据的饼状图大小一致
- R语言 相关性的显著性检验
- torch.Generator 随机数生成器
- 课设——八皇后问题(N皇后解决)
- BIM模型文件下载——售楼中心室内装饰Revit模型
- 任务栏浏览器主页被劫持
- SU-8 光刻胶曝光时间的确定
- android 英语时间格式转换,android 时间格式解析转换关键点
- 【cuda】Nsight System 下载,安装与使用
- spring注解是怎么实现的?
- AcrelCloud-1000变电所运维云平台在榆林市科技馆的应用
- 【已解决】Could not find a declaration file for module ‘xxx‘. vue + ts