国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

寫Hudi異常:'Not an Avro data file' 解決方法

開發 前端
各種原因導致.rollback、.clean、.clean.requested和.clean.inflight文件大小為0,也就是空文件,而在archive和clean時無法處理空文件,就報錯上面的異常。

?前言

記錄寫Hudi時的一個異常的解決方法,其實這個異常從去年就發現并找到解決方法了,而且已經提交到社區merge了,PR:[HUDI-2675] Fix the exception 'Not an Avro data file' when archive and clean。之所以現在又要總結這個異常的處理方法是因為:我們生產環境用的 Hudi0.9.0版本,且沒有升級,因為升級Hudi版本可能會有不兼容的問題,需要測試,比較費時,所以目前還沒有升級版本,而這個PR合入的版本為0.11.0,所以本文主要總結在0.9.0版本如何解決這個問題,當然也適用于0.11.0版本之前的其他有同樣問題的版本。

異常信息

archive和clean時都會有這個異常,主要異常信息:

 Caused by: java.io.IOException: Not an Avro data file

異常產生原因

各種原因導致.rollback、.clean、.clean.requested和.clean.inflight?文件大小為0,也就是空文件,而在archive和clean時無法處理空文件,就報錯上面的異常。有一個已知原因,就是HDFS配了滿了之后會產生空文件,更多的是PMC也不清楚的未知原因,上面的PR中有體現。

解決方案

這是在不升級Hudi版本的前提下,如果可以升級Hudi版本,直接升級到Hudi最新版即可。

解決方案1

當發生該異常時,由運維人員刪除對應的空文件即可,當然這適用于表不多且異常偶發的情況,具體命令放在最后。但是當表比較多時,運維人員處理起來比較麻煩,這就需要第二種解決方案了。

解決方案2

基于Hudi0.9.0源碼將文章開頭提到的PR合進去,然后install本地倉庫或者公司自己的內部倉庫中,然后Maven pom依賴中引用自己的倉庫地址就可以了。基于0.9.0的代碼我已經提交,有需要的可以自行下載,其他版本就需要大家自己合了。

  • gitee: https://gitee.com/dongkelun/hudi/tree/0.9.0-fixNotAvro/
  • github: https://github.com/dongkelun/hudi/tree/0.9.0-fixNotAvro

Hudi maven install命令:

mvn clean install -DskipTest

驗證

直接本地運行測試用例中的testArchiveCompletedRollbackAndClean和testCleanEmptyInstants,這倆測試用例通過了應該就沒有問題

方案1具體處理方法

不管是什么原因導致的異常,不管用何種方式,只要確保找到正確的對應的大小為0的空文件刪掉即可,一定不要刪錯

異常信息1

ERROR [Timer-Driven Process Thread-4] o.a.hudi.table.HoodieTimelineArchiveLog Failed to archive commits, .commit file: 20220726050533.rollback
java.io.IOException: Not an Avro data file
at org.apache.avro.file.DataFileReader.openReader(DataFileReader.java:50)
at org.apache.hudi.common.table.timeline.TimelineMetadataUtils.deserializeAvroMetadata(TimelineMetadataUtils.java:178)
at org.apache.hudi.client.utils.MetadataConversionUtils.createMetaWrapper(MetadataConversionUtils.java:103)
at org.apache.hudi.table.HoodieTimelineArchiveLog.convertToAvroRecord(HoodieTimelineArchiveLog.java:341)
at org.apache.hudi.table.HoodieTimelineArchiveLog.archive(HoodieTimelineArchiveLog.java:305)
at org.apache.hudi.table.HoodieTimelineArchiveLog.archiveIfRequired(HoodieTimelineArchiveLog.java:128)
at org.apache.hudi.client.AbstractHoodieWriteClient.postCommit(AbstractHoodieWriteClient.java:439)
at org.apache.hudi.client.HoodieJavaWriteClient.postWrite(HoodieJavaWriteClient.java:187)
at org.apache.hudi.client.HoodieJavaWriteClient.insert(HoodieJavaWriteClient.java:129)
at org.apache.nifi.processors.javaHudi.JavaHudi.write(JavaHudi.java:523)
at org.apache.nifi.processors.javaHudi.JavaHudi.onTrigger(JavaHudi.java:404)
at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1167)
at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:208)
at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

原因

.rollback文件大小為0

解決方法

在表元數據路徑下查看異常信息里的文件,確認是否大小為0

hadoop fs -ls hdfs://cluster1/apps/hive/tenant/zxqzk_smzt_mztgx/sam_exp/.hoodie/20220726050533.rollback
0 2022-07-26 07:05 hdfs://cluster1/apps/hive/tenant/zxqzk_smzt_mztgx/sam_exp/.hoodie/20220726050533.rollback

確認為0后,刪掉該文件即可

hadoop fs -rm -r hdfs://cluster1/apps/hive/tenant/zxqzk_smzt_mztgx/sam_exp/.hoodie/20220726050533.rollback

注意不要刪錯,也可將該文件改名避免刪錯再啟動組件驗證是否正常,如果還有異常,排查其他.rollback大小為0文件,一起刪掉

最好不要用grep的方式刪除,避免誤刪,只有配額不足導致的文件特別多的情況下才建議使用

查找所有符合條件的文件(一般只有一符合條件的文件,目前發現只有配額不足的情況才會有多個)

hadoop fs -ls -R  hdfs://cluster1/apps/hive/tenant/zxqzk_smzt_mztgx/sam_exp/.hoodie | grep .rollback | grep -v .rollback.inflight | awk '{ if ($5 == 0) print $8 }'

刪除所有符合條件的文件

hadoop fs -ls -R  hdfs://cluster1/apps/hive/tenant/zxqzk_smzt_mztgx/sam_exp/.hoodie | grep .rollback | grep -v .rollback.inflight | awk '{ if ($5 == 0) print $8 }'  | xargs hadoop fs -rm

異常信息2:

ERROR [Timer-Driven Process Thread-4] o.a.hudi.table.HoodieTimelineArchiveLog Failed to archive commits, .commit file: 20220726050533.rollback
java.io.IOException: Not an Avro data file
at org.apache.avro.file.DataFileReader.openReader(DataFileReader.java:50)
at org.apache.hudi.common.table.timeline.TimelineMetadataUtils.deserializeAvroMetadata(TimelineMetadataUtils.java:178)
at org.apache.hudi.client.utils.MetadataConversionUtils.createMetaWrapper(MetadataConversionUtils.java:103)
at org.apache.hudi.table.HoodieTimelineArchiveLog.convertToAvroRecord(HoodieTimelineArchiveLog.java:341)
at org.apache.hudi.table.HoodieTimelineArchiveLog.archive(HoodieTimelineArchiveLog.java:305)
at org.apache.hudi.table.HoodieTimelineArchiveLog.archiveIfRequired(HoodieTimelineArchiveLog.java:128)
at org.apache.hudi.client.AbstractHoodieWriteClient.postCommit(AbstractHoodieWriteClient.java:439)
at org.apache.hudi.client.HoodieJavaWriteClient.postWrite(HoodieJavaWriteClient.java:187)
at org.apache.hudi.client.HoodieJavaWriteClient.insert(HoodieJavaWriteClient.java:129)
at org.apache.nifi.processors.javaHudi.JavaHudi.write(JavaHudi.java:523)
at org.apache.nifi.processors.javaHudi.JavaHudi.onTrigger(JavaHudi.java:404)
at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1167)
at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:208)
at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

異常原因

.clean文件大為0

解決方法

找到對應表元數據路徑下.clean文件大小為0 的文件并刪除,目前遇到的情況只有一個文件且是最新的.clean文件最好不要用grep的方式刪除,避免誤刪

hadoop fs -ls hdfs://cluster1/apps/hive/tenant/zxqzk_smzt_mztgx/sam_exp/.hoodie/20220726050533.rollback
0 2022-07-26 07:05 hdfs://cluster1/apps/hive/tenant/zxqzk_smzt_mztgx/sam_exp/.hoodie/20220726050533.rollback

異常信息3:

o.a.h.t.a.clean.BaseCleanActionExecutor Failed to perform previous clean operation, instant: [==>20211011143809__clean__REQUESTED]
org.apache.hudi.exception.HoodieIOException: Not an Avro data file
at org.apache.hudi.table.action.clean.BaseCleanActionExecutor.runPendingClean(BaseCleanActionExecutor.java:87)
at org.apache.hudi.table.action.clean.BaseCleanActionExecutor.lambda$execute$0(BaseCleanActionExecutor.java:137)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at org.apache.hudi.table.action.clean.BaseCleanActionExecutor.execute(BaseCleanActionExecutor.java:134)
at org.apache.hudi.table.HoodieJavaCopyOnWriteTable.clean(HoodieJavaCopyOnWriteTable.java:188)
at org.apache.hudi.client.AbstractHoodieWriteClient.clean(AbstractHoodieWriteClient.java:660)
at org.apache.hudi.client.AbstractHoodieWriteClient.clean(AbstractHoodieWriteClient.java:641)
at org.apache.hudi.client.AbstractHoodieWriteClient.clean(AbstractHoodieWriteClient.java:672)
at org.apache.hudi.client.AbstractHoodieWriteClient.autoCleanOnCommit(AbstractHoodieWriteClient.java:505)
at org.apache.hudi.client.AbstractHoodieWriteClient.postCommit(AbstractHoodieWriteClient.java:440)
at org.apache.hudi.client.HoodieJavaWriteClient.postWrite(HoodieJavaWriteClient.java:187)
at org.apache.hudi.client.HoodieJavaWriteClient.insert(HoodieJavaWriteClient.java:129)
at org.apache.nifi.processors.javaHudi.JavaHudi.write(JavaHudi.java:401)
at org.apache.nifi.processors.javaHudi.JavaHudi.onTrigger(JavaHudi.java:305)
at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1166)
at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:208)
at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: Not an Avro data file
at org.apache.avro.file.DataFileReader.openReader(DataFileReader.java:50)
at org.apache.hudi.common.table.timeline.TimelineMetadataUtils.deserializeAvroMetadata(TimelineMetadataUtils.java:178)
at org.apache.hudi.common.util.CleanerUtils.getCleanerPlan(CleanerUtils.java:106)
at org.apache.hudi.table.action.clean.BaseCleanActionExecutor.runPendingClean(BaseCleanActionExecutor.java:84)
... 24 common frames omitted

異常原因

. clean.requested?  或者 . clean.inflight 

解決方法

刪除對應的大小為0的文件,文件名異常信息里已經有了

最好不要用grep的方式刪除,避免誤刪,只有配額不足導致的文件特別多的情況下才建議使用

hadoop fs -ls -R  hdfs://cluster1/apps/hive/tenant/zxqzk_smzt_mztgx/sam_exp/.hoodie | grep .clean.requested | awk '{ if ($5 == 0) print $8 }'  | xargs hadoop fs -rm

責任編輯:武曉燕 來源: 倫少的博客
相關推薦

2009-06-12 16:17:48

Hibernate l

2010-11-04 10:44:27

DB2 not fou

2009-12-25 10:01:23

WinForm程序

2018-01-18 10:46:01

服務器磁盤原因

2011-03-01 13:40:45

500 OOPS

2010-03-23 13:46:17

無線網卡分配IP地址

2022-10-28 07:10:51

HudiJavaHive

2011-09-16 15:36:47

網絡環路

2010-07-15 14:01:12

telnet亂碼

2010-05-27 09:33:04

SVN沖突

2022-10-13 07:35:52

數據配置MySQL

2010-10-13 17:22:12

MySQL查詢亂碼

2009-07-03 18:14:27

Servlet線程安全

2010-04-20 16:46:41

Oracle數據庫密碼

2009-09-10 09:35:25

Linq語句

2009-12-17 10:09:02

ssh超時斷開

2009-07-01 18:14:36

JSP亂碼

2010-01-18 10:19:04

FreeBSDroot密碼

2011-07-04 10:09:19

Qt Creator BUG

2023-04-06 15:21:34

IIoT自動化
點贊
收藏

51CTO技術棧公眾號

欧美a大片欧美片| 亚洲欧美电影院| 国产精自产拍久久久久久| 免费看男女www网站入口在线| 欧洲一区在线电影| 小明精品国产一区二区三区| 中文字幕一区二区三区不卡在线| 国产精彩免费视频| 成人精品高清在线| 真实国产乱子伦对白视频| 激情综合网激情| 好吊色这里只有精品| 久久精品99国产精品日本| 欧美人与物videos另类| 中文在线日韩| av电影成人| 亚洲天堂久久| 欧美激情论坛| 日韩在线观看一区二区| 欧美日韩三区四区| 国产一级一区二区| 水蜜桃亚洲精品| 韩国三级电影一区二区| 屁屁影院ccyy国产第一页| www.色综合.com| 中文字幕第36页| 日韩理论片一区二区| 国产超碰在线观看| 色狠狠av一区二区三区| 在线观看免费版| 亚洲成人激情在线| 福利一区二区三区视频在线观看| 精品国产欧美一区二区三区成人| 无码国模国产在线观看| 国产91精品久久久久| 99精品网站| 日韩成人av电影在线| 国产成人在线视频免费播放| 日本三级免费网站| 中文字幕中文乱码欧美一区二区 | 亚洲精品一二| 亚洲欧美日韩精品久久久 | 女人一区二区三区| 国产高清不卡二三区| 久久亚洲精品无码va白人极品| 咪咪网在线视频| 91偷拍精品一区二区三区| 激情小说亚洲色图| 国产精品一线二线三线| 国产不卡视频在线播放| 亚洲人成无码www久久久| 伊人色综合久久天天人手人婷| 中文字幕大看焦在线看| 91精品国产91久久综合桃花| 一级毛片久久久| 久久久精品视频成人| 国产91久久精品一区二区| 成人永久免费| 成人网在线播放| 男人的天堂网av| 日韩久久免费av| 精品成人18| 97av自拍| 成人小视频在线观看| 日本aⅴ中文| 日韩视频在线一区二区| 北岛玲精品视频在线观看| 成人福利视频网| 懂色av中文字幕一区二区三区| ga∨成人网| 国产亚洲精品美女久久久| 日韩成人精品一区二区| 日韩精品手机在线观看| 亚洲图片欧美视频| 韩国精品主播一区二区在线观看 | 97久久精品人人爽人人爽蜜臀| 香蕉自在线视频| 亚洲人成网站777色婷婷| 欧美在线电影| 人人妻人人做人人爽| 在线看国产一区| 亚洲精品国产九九九| 欧美不卡福利| 国产精品美女久久久久久久久久久 | 中文字幕在线网| 亚洲欧美精品中文字幕在线| 日韩母乳在线| a级黄色片免费| 欧美性大战久久| 九九热线有精品视频99| 自拍亚洲欧美老师丝袜| 欧美日韩国产丝袜美女| 国产aa精品| 亚洲精品国产精品国自产观看 | 欧美wwwwwww| 亚洲欧洲一区二区三区久久| 欧美久久影院| 999精彩视频| 在线看欧美日韩| 99综合视频| 亚洲人av在线| 68精品国产免费久久久久久婷婷| 久久99国产精品久久| 成全电影播放在线观看国语| 8x拔播拔播x8国产精品| 国产乱子轮精品视频| 日本三级视频在线播放| 国产精品扒开腿做| 国产人成亚洲第一网站在线播放| 日韩免费电影| 亚洲午夜精品一区二区| 欧美精品一卡两卡| 午夜久久影院| 亚洲成人福利| 国产精品视频午夜| 国产精品你懂的在线| 成人免费观看49www在线观看| 黄色污污在线观看| 亚洲国产精品悠悠久久琪琪| 日韩精品1区2区3区| 国产精品久久麻豆| 国产综合欧美在线看| 日韩欧中文字幕| 婷婷精品进入| 视频一区二区三区国产 | 亚洲综合小说图片| 成人在色线视频在线观看免费大全| xxxx欧美18另类的高清| 99久久综合狠狠综合久久| 成人在线观看免费播放| 国产a级黄色大片| 国产亚洲日本欧美韩国| 高清不卡一区二区| 久久亚洲精品中文字幕| 精品久久一二三| 久久九九免费视频| 国产色婷婷亚洲99精品小说| 亚洲不卡视频| 中文久久久久久| 青青草精品毛片| 亚洲福利一区二区三区| 中文无码久久精品| av大全在线| 精品一区二区三区毛片| 正在播放亚洲1区| 91美女蜜桃在线| 欧美黑人巨大videos精品| 久草在.com| 亚洲综合中文字幕在线| 欧美老肥妇做.爰bbww| 久久99精品国产.久久久久| 成人午夜亚洲| 成人黄色免费电影| 91香蕉国产在线观看| 欧美挠脚心视频网站| 精品影视av免费| 清纯唯美激情亚洲| 九色在线网站| 国产一区二区三区色淫影院| 亚洲精品第一国产综合精品| 亚洲18私人小影院| 欧美日韩美女在线| 亚洲国产精品自拍| 亚洲私人影院在线观看| 伊人色**天天综合婷婷| 日本电影久久久| 宅男午夜在线| 国内不卡一区二区三区| 日韩电影免费在线观看中文字幕| 欧美丰满少妇xxxxx| 97久久精品人人做人人爽| 亚洲婷婷伊人| 日本成a人片在线观看| 精品91一区二区三区| 午夜精品一区二区三区在线视频 | 欧美日韩人人澡狠狠躁视频| 久久亚洲图片| 国产精品亚洲一区二区在线观看| 精品伦理一区二区| av资源站久久亚洲| 天堂成人免费av电影一区| 国内精品视频| jizz蜜桃视频在线观看| 妞干网这里只有精品| 国内精品久久久久久中文字幕| 午夜精品久久久久久久| 一区二区三区四区在线看| 成人情视频高清免费观看电影| 欧美一级日韩免费不卡| av色综合久久天堂av综合| 国产国产精品| 成人看片网站| 中文字幕一二三区在线观看 | 在线观看三级视频欧美| 国产美女在线观看一区| 国产影视一区| 国模视频一区| a√资源在线| 亚洲欧美国产中文| 五月天综合网|