游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

flink流式增量查询hudi表流程分析

  环境flink1。13。6hudi0。11。0mergeonread表
  代码示例tEnv。executeSql(CREATETABLEtbpersonhudi(idBIGINT,ageINT,nameSTRING,createtimeTIMESTAMP(3),timestampTIMESTAMP(3),PRIMARYKEY(id)NOTENFORCED)WITH(connectorhudi,table。typeMERGEONREAD,pathfile:D:datahadoop3。2。1warehousetbpersonhudi,read。startcommit20220722103000,read。endcommit20220722104000,read。task1,read。streaming。enabledtrue,read。streaming。checkinterval30));TabletabletEnv。sqlQuery(selectfromtbpersonhudi);tEnv。toChangelogStream(table)。print()。setParallelism(1);env。execute(test);
  流程分析
  hudi源入口(HoodieTableSource)
  HoodieTableSource实现ScanTableSource,SupportsPartitionPushDown,SupportsProjectionPushDown,SupportsLimitPushDown,SupportsFilterPushDown接口,后4个接口主要是支持对查询计划的优化。ScanTableSource则提供了读取hudi表的具体实现,核心方法为org。apache。hudi。table。HoodieTableSourcegetScanRuntimeProvider:if(conf。getBoolean(FlinkOptions。READASSTREAMING)){开启了流式读(read。streaming。enabled)StreamReadMonitoringFunctionmonitoringFunctionnewStreamReadMonitoringFunction(conf,FilePathUtils。toFlinkPath(path),maxCompactionMemoryInBytes,getRequiredPartitionPaths());InputFormatRowData,?inputFormatgetInputFormat(true);OneInputStreamOperatorFactoryMergeOnReadInputSplit,RowDatafactoryStreamReadOperator。factory((MergeOnReadInputFormat)inputFormat);SingleOutputStreamOperatorRowDatasourceexecEnv。addSource(monitoringFunction,getSourceOperatorName(splitmonitor))。setParallelism(1)。transform(splitreader,typeInfo,factory)。setParallelism(conf。getInteger(FlinkOptions。READTASKS));returnnewDataStreamSource(source);}
  上面代码在流环境中创建了一个SourceFunction(StreamReadMonitoringFunction)和一个自定义的转换(StreamReadOperator)StreamReadMonitoringFunction:监控hudi表元数据目录(。hoodie)获取需要被读取的文件分片(MergeOnReadInputSplit,一个baseparquet文件和一组log文件),然后把分片递给下游的转换算子StreamReadOperator进行文件读取;固定一个线程去监控,名称为splitmonitorxxxxx。StreamReadOperator:将按timeline升序收到的MergeOnReadInputSplit一个一个地读取分片数据;算子名称为splitreaderxxxxx,可以通过设置read。tasks进行设置并行度
  定时监控元数据获得增量分片(StreamReadMonitoringFunction)
  StreamReadMonitoringFunction负责定时(read。streaming。checkinterval)扫描hudi表的元数据目录。hoodie,如果发现在activetimeline上有新增的instant〔actioncommit,deltacommit,compaction,replaceactivecompleted〕,从这些instant信息中可以知道数据变更写到了哪些文件(parquet,log),然后构建成分片对象(MergeOnReadInputSplit)。核心属性:issuedInstant,这个是增量查询的依据,记录着当前已经消费的数据的最新instant,类似于kafka的offset,但是hudi是基于timeline。该值是有状态的,维护在ListState中,所以flinkjob重启依然可以做到增量。核心方法:StreamReadMonitoringFunctionmonitorDirAndForwardSplits,很简单,就做了两件事,调用IncrementalInputSplitsinputSplits获取到增量分片(有序),然后传递给下游的算子(StreamReadOperator)publicvoidmonitorDirAndForwardSplits(SourceContextMergeOnReadInputSplitcontext){HoodieTableMetaClientmetaClientgetOrCreateMetaClient();IncrementalInputSplits。ResultresultincrementalInputSplits。inputSplits(metaClient,this。hadoopConf,this。issuedInstant);for(MergeOnReadInputSplitsplit:result。getInputSplits()){context。collect(split);}}
  获取增量分片(IncrementalInputSplits)
  主要逻辑在方法IncrementalInputSplitsinputSplits(metaClient,hadoopConf,issuedInstant),需要先了解hudi关于timeline和instant的一些基本概念,详细的流程如下图所示:
  如果flinkjob首次运行指定了read。startcommit和read。endcommit,但是该范围是比较久以前,instant已经被归档,那么流作业将永远不能消费到数据
  https:github。comapachehudiissues6167
  读取数据文件(StreamReadOperator)
  StreamReadOperator算子接收分片后会缓存在队列Queuesplits,然后不停从队列中poll分片放到线程池中执行
  privatevoidprocessSplits()throwsIOException{format。open(split);consumeAsMiniBatch(split);enqueueProcessSplits();}
  主要有三个步骤:从队列中peek分片,调用MergeOnReadInputFormat。open构建迭代器,迭代器是用来进行文件的数据读取,一个迭代器对应一个分片(多个物理文件,baselog),对应不同读取的场景,有几种迭代器:BaseFileOnlyFilteringIterator,BaseFileOnlyIterator,LogFileOnlyIterator,MergeIterator,SkipMergeIterator微批量消费,每批只读2048记录,将把记录传递给下游的算子消费同时标记消费的总数,如果该分片读到了尾,则将该分片从队列中弹出,并关闭MergeOnReadInputFormat继续处理队列中的分片,回到步骤1,如果上一次的分片没消费完,那么本次循环将继续消费,只不过是由另一个线程处理。

人能活多久,长寿的秘密长寿一直都是人们津津乐道的话题,也是大家不断追求的目标,我也不例外,趁着过年,我再次提着一箱茅台拜访这位长寿的高人,这已经是第三次了,前面他都没有说,看我这样一次又一次来,也许……视频体验完华为P40Pro冰霜银和华为P40零度白,我只想说Hello,大家好!我是水水。今晚,华为在国内正式发布了华为P40系列手机新品,其中华为P40的起售价格并不是3988元,而是4188元,而最贵的华为P40Pro则卖到了888……中国联通与小米联合推出WiFi6路由器AX3600IT之家4月5日消息3月27日,以无线升级,无限共振为主题的中国联通WiFi路由器升级计划发布会在空中盛会平台召开。发布会上,中国联通向产业链展示了中国联通智慧生态布局,同时发……丁浩杨鼎新随手令形势明朗备战靠与AI对练2023年1月30日,丁浩九段在第27届LG杯世界棋王赛决赛首局完美战胜杨鼎新九段,三番棋开门红,距个人第一个世界冠军一步之遥。决赛第二局2月1日进行。赛后丁浩表示,对手随手后……人在低谷,唯有自渡作者:国学生活珏奕活了几十年,往往可以总结出这样的规律:人生活在世界上,没有什么是一成不变的,酸甜苦辣,起起伏伏。生命不可能一直处在高光时刻,偶尔的不顺或失意……华为MateBookXPro笔记本现场实拍IT之家2月25日消息昨日晚间,华为MateBookXPro新款笔记本已经在MWC2019大会上发布,售价也已经公布。MateBookXPro笔记本拥有轻薄机身,重量仅为1。3……魅族GaN充电器发布三接口最高均支持65W输出,199元IT之家5月8日消息今日下午,在魅族17系列5G旗舰发布会上,魅族GaN充电器正式发布,售价199元。魅族超充GaN三口充电器拥有超强功率,支持多种快充协议。据介绍,这款……微软XboxSeriesS游戏加载有多快?微软亲自对比给你看IT之家9月21日消息本月初,微软最近正公布次世代主机XboxSeriesXS的信息,其中令人印象深刻的一个东西就是它采用了更强的固态硬盘。微软今日放出了一段关于XboxSer……云从科技再登人民日报天府新区项目成标杆包括18个智能水位站、5个流量站、100套森林火灾地表火探测器在内,200余个前端感知点位,将实时数据输送至云从科技主导搭建的综合枢纽数字孪生平台天府大脑,并在数字孪生世界完美……中国男篮亚洲杯名单,周琦在列郭艾伦缺席首先我们还是按照惯例,说一下今日四场中场的战况。中超联赛第10轮比赛继续展开争夺,梅州客家将迎来与成都蓉城的第二回合较量。上半场科索维奇助攻武卡诺维奇破门,下半场胡荷韬扳……英特尔详解11代酷睿Xe核显不仅可以爽玩游戏,还有流媒体图像IT之家8月20日消息今天,英特尔在其微信公众号上对即将推出的11代移动酷睿的Xe核显进行了进一步的说明,英特尔表示,核显很能打时代全面到来。如上图所示,Xe图形架构与原……美丽的田园风光令人窒息喜欢花的人,有常人不为所知的痴情,总是傻傻地认为别人也跟自己一样,为花而醉,为落花心碎。沉醉于花海,闻花香,听虫鸣,什么都可以想,什么也可以不想这两天惊喜去年种下的玫瑰静……
微星发布OptixAG321CR曲面显示器31。5英寸,支持IT之家2月12日消息微星近日发布了31。5英寸OptixAG321CR游戏曲面显示器,该显示器的面板呈凹形,曲率半径为1500R。该显示器的分辨率为19201080像素……微星发售MPGArtymis343CQR电竞显示器VA曲面屏IT之家2月4日消息微星于本月正式发售MPGArtymis343CQR电竞显示器。这款产品为34英寸21:9比例,分辨率34401440。显示器采用VA面板,曲率为1000R。……LG2732英寸OLED显示器通过认证99DCIP3色域IT之家2月2日消息LG两款OLED屏显示器现已在韩国通过认证,尺寸分别为27英寸和32英寸。如上图所示,LG两款显示器的型号分别为27EP950和32EP950。……天舟三号货运飞船发射成功货运飞船都带了哪些货?来源:央视新闻客户端这次天舟三号货运飞船带了哪些货物?可以供下一拨上去的航天员使用多长时间?天舟三号又要在太空驻留多长时间?来了解一下!天舟三号任务是空间站货运飞船……浩瀚体育安帅曾将加图索引荐给那不勒斯,后者篡位导致关系破裂昨天皇马主帅安切洛蒂在新闻发布会上公开提到了与昔日弟子加图索之间的矛盾,今天包括《晚邮报》、《共和报》和《米兰体育报》在内的多家意大利都媒体详细报道了两人关系破裂的原因。……球迷为格林罚款鸣不平,格林转发并评论表示非常惊喜北京时间12月2日,NBA官方发布公告,对勇士队的德拉蒙德格林罚款2。5万美元。原因是格林在勇士对阵独行侠第四节11分20秒时,对球迷使用了污秽下流的言论,被NBA罚款2……中国彩虹5无人机首次完成海洋应用型功能验证飞行IT之家7月16日消息近日,中国航天科技集团有限公司十一院彩虹5无人机团队赶赴外场开展项目履约,执行密集飞行任务。在此次任务中,彩虹5无人机首次完成海洋应用型功能验证飞行……一图看懂三星Exynos1080芯片综合性能跑分达69万IT之家11月12日消息今天下午,三星正式推出了全新一代Exynos1080处理器。Exynos1080处理器采用5nm工艺制程,采用了CortexA78CPU、Mali78G……30强来了!2022环球旅游文化小姐郭焱煜环球旅游频道向阳而生,逐光而行因为旅行,所以遇见我们的30强来了再次PICK环球旅游文化小姐姐2022环球旅游文化小姐30强:郭焱煜青春、健……永登县以三抓三促行动为发展蓄势赋能中铝连城分公司500千安电解铝生产线稳步运营中国甘肃网3月27日讯据兰州晚报报道(记者任泽昕实习生陈舜李娇娇文图)3月24日,我市三抓三促行动全媒体集中采访活动走进永登县……苹果调查M1MacBook使用反馈,下一代你关心哪些升级IT之家12月24日消息外媒9to5Mac报道,总的来说,苹果的M1MacBook和Macmini凭借全面的大改进而大受欢迎。然而,改进永无止境,苹果在一项新的调查中向M1Ma……适合发朋友圈的晚安语录,浪漫深情,说到心坎里心跳和呼吸都是关于你,你就像是一阵清风,融化在我的奶茶杯里。Heartbeatandbreathingareaboutyou,youarelikeabreeze,melt……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网