首页 > 其他分享 >Hudi的OverwriteNonDefaultsWithLatestAvroPayload效果测试

Hudi的OverwriteNonDefaultsWithLatestAvroPayload效果测试

时间:2023-05-30 10:55:04浏览次数:39  
标签:文件 Hudi 测试 OverwriteNonDefaultsWithLatestAvroPayload t71 hoodie pk ds 1001

设置 Payload 为 OverwriteNonDefaultsWithLatestAvroPayload:

set `hoodie.datasource.write.payload.class`=`org.apache.hudi.common.model.OverwriteNonDefaultsWithLatestAvroPayload`;

插入和查询语句:

insert into t71 (ds,ut,pk,f0) values (20230101,CURRENT_TIMESTAMP,1001,1);
select * from t71 where pk=1001; -- 第 1 次查询

insert into t71 (ds,ut,pk,f1) values (20230101,CURRENT_TIMESTAMP,1001,2);
select * from t71 where pk=1001; -- 第 2 次查询

insert into t71 (ds,ut,pk,f2) values (20230101,CURRENT_TIMESTAMP,1001,3);
select * from t71 where pk=1001; -- 第 3 次查询

第 1 次查询的结果:

_hoodie_partition_path  _hoodie_file_name	                                                      ut                       pk    f0   f1   f2
ds=20230101             00000001-1521-41de-94a3-96b0b8f4a54f-0_1-21-19_20230529124148552.parquet  2023-05-29 12:41:48.74   1001  1    NULL NULL

第 2 次查询的结果:

_hoodie_partition_path  _hoodie_file_name	                                                      ut                       pk    f0   f1   f2
ds=20230101             00000001-1521-41de-94a3-96b0b8f4a54f-0                                    2023-05-29 12:46:11.696  1001  1    2    NULL

第 3 次查询的结果:

_hoodie_partition_path  _hoodie_file_name	                                                      ut                       pk    f0   f1   f2
ds=20230101             00000001-1521-41de-94a3-96b0b8f4a54f-0                                    2023-05-29 12:50:30.234  1001  1    NULL 3

从上测试可以看到第 3 次的插入覆盖了第 2 次的插入,原因是第 2 次的结果还没有落地形成 basefile(基础文件,即 parquet 列式文件),还处于 logfile 状态(日志文件,即行式的 avro 文件),基于 precombine 覆盖了。

Compaction

Hudi 的 MOR 表由列式 Parquet 文件和行式 Avro 文件构成,其中 Avro 是新写入的,为 logfile,而 Parquet 是存储已有的,为 basefile,注意对于 COW 表只有 basefile。如果 Avro 文件过多,查询性能受到的影响就大,通过 compaction 合并 Avro 文件降低影响。

Compaction 又分为两步:调度(schedule)和执行(run)。调度的目的是通过扫描分区,找出要合并的 fileslices,将 compaction 计划写入时间轴(timeline);执行这步读取 compaction 计划和合并 fileslices。

使用 Compaction 分为同步和离线两种:

  • 同步 Compaction 设置
hoodie.compact.inline=true
hoodie.compact.inline.max.delta.commits=2
  • 离线 Compaction 设置
hoodie.compact.inline=false
hoodie.compact.inline.max.delta.commits=2

离线方式,建议设置 compaction.schedule.enable 为 true,开启由写任务(write task)定期(periodically)触发执行。

基础文件(basefile)

基础文件为列式格式(如 Parquet 或 Orc,默认为 Parquet)的记录集,对于 COW 表只有基础文件。

日志文件(logfile)

日志文件包含了针对基础文件的插入(inserts)、更新(updates)和删除(deletes)数据,日志文件仅 MOR 表有。

_hoodie_file_name

存储记录的文件名。

标签:文件,Hudi,测试,OverwriteNonDefaultsWithLatestAvroPayload,t71,hoodie,pk,ds,1001
From: https://www.cnblogs.com/aquester/p/17442610.html

相关文章

  • 安全测试实践-万家APP越权逻辑漏洞挖掘
    逻辑漏洞会导致业务面临着巨大的经济损失隐患与敏感数据泄露的风险,本文从安全测试的角度,以越权逻辑漏洞为例,介绍逻辑漏洞的挖掘方法和实践过程。一、什么是越权逻辑漏洞定义:指由于系统的权限控制逻辑不够严谨,使得系统用户可以访问或操作未授权的数据和功能。包括水平越权和垂直......
  • 测试环境,调试gnn服务
    #1.关闭tafnodeps-ef|greptafnode/usr/local/app/taf/tafnode/util/stop.sh#2.启动程序gdb/usr/local/app/taf/tafnode/data/HQExtend.StockPoolAlarmServer/bin/StockPoolAlarmServerbreakReminderMgr.cpp:782--config=/usr/local/app/taf/tafnode/data/HQExtend.S......
  • 状态转移测试
    一、概述把软件若干种状态之间的转换条件和转换路径抽象出来,从覆盖所有状态转移路径的角度去设计测试用例,关注状态的转移是否正确。二、状态转移测试的步骤1、分析需求,整理所有状态2、画出状态转移图3、根据状态转移图,列出状态-事件表4、根据状态转移图,画出状态转换树(测试路径)5、......
  • 2023-05-30 前端h5页面如何实现调起微信支付功能(该回答来自chatgpt,实际效果未测试)
    前端H5页面调起微信支付功能需要结合微信JS-SDK和后端接口实现。以下是基本步骤和示例代码:1.获取微信公众号的appid和secret在微信公众平台上创建一个公众号,获取其对应的appid和secret。2.引入微信JS-SDK将微信JS-SDK的链接放入HTML文件的头部,例如:<scriptsrc="https://res.......
  • web安全详解(渗透测试基础)
    一、Web基础知识1.http协议超文本传输协议是互联网上应用最广泛的一种网络协议。所有www文件都必须遵守的一个标准,是以ASCII码传输,建立在TCP/IP协议之上的应用层规范,简单点说就是一种固定的通讯规则。2.网络三种架构及特点网络应用程序架构包括三种:客户机/服务器结构(C/S)......
  • 2021级《软件工程》 开发技能测试试卷题目-河北宏志大学学生成绩管理系统
    2021级《软件工程》开发技能测试试卷(180分钟)河北宏志大学学生成绩管理系统(卷面成绩40分)河北宏志大学学生成绩管理系统1、项目需求:学生管理是各大院校的管理工作中尤为重视的一项工作,它一直以来是学校管理的一项重要的衡量指标。学生管理系统的应用解决了学校日常学生管理工......
  • 测试计划
    为了确保基于医学文献精准检索的javaweb项目和安卓端的质量,我们需要制定详细的测试计划。下面是可能适用于这种类型的测试计划的一些关键元素:功能测试:测试应该覆盖所有的基本功能需求,例如搜索文献、筛选、排序、浏览、导出并将结果保存为文件等等。每个功能都应该进行多次测试,......
  • evo测试命令
    cd/home/slam/catkin_ws/src/ORB_SLAM2双目:cd/home/slam/catkin_ws/src/ORB_SLAM2./Examples/Stereo/stereo_eurocVocabulary/ORBvoc.txtExamples/Stereo/EuRoC.yaml/home/slam/datasets/V1_01_easy/mav0/cam0/data/home/slam/datasets/V1_01_easy/mav0/cam1/dataExampl......
  • python中测试方法所用的时间—timeit
    方法代码使用timeit方法测试两个函数的运行速度importtimeitstrlist=['Thisisalongstringthatwillnitkeepinmemory.'forninrange(10000)]defuse_join():#使用字符串的join方法连接多个字符串return''.join(strlist)defues_plus():#使用运算符+连接多个字......
  • Erlang 对dict、maps、array的部分性能测试
    竖轴:时间(微秒)横轴(数据量)备注(maps与dict的key是{name,整数}与整数在速度上差别不大,array的key是正整数)结论数据量在32-10000用maps的各种操作速度更快(但内存稍多,引用官方描述,此处没测)数据量1万以上,如果键是正整数,array与maps性能相当(官方推荐用array)数据量接近32个的时候是map......