问题描述
@[目录]
0 原因猜测
每次我们更新目标时,hoodie 都会生成一个日志并将其压缩,从而导致在该时间点之前的任何增量查询都消失。
1
这里是对原始标签的所有操作。
1.1 操作 1(更新)
先对原表进行upsert操作(更新370条数据),然后进行增量查询,结果成功
使用hadoop命令查询HDFS文件,出现log日志,数据写入日志文件,但未写入parquet:
执行压缩操作时未发生压缩。
1.2 操作 2(插入和更新)
原表数据插入6条数据,更新380条数据。使用Spark查询的HDFS数据变化如下:
重复提交数据 370。使用Spark进行增量查询时出现如下错误:
21/07/30 14:25:45 ERROR executor.Executor: Exception in task 0.0 in stage 2.0 (TID 4)
java.io.FileNotFoundException: File does not exist: hdfs://hdp-jk-1:8020/user/hive/warehouse/test_increment_hudi9_mor/2021/07/30/4fe43850-4be8-447f-827e-edfdba44adb4-0_0-34 0-294_20210730142459.parquet
使用hadoop命令查询instantTime的'20210730142459'的parquet,发现实际writetoken为'341-295',而查询到的writetoken为'340-294',说明文件又被写入了。因此,writetoken 被更改,导致 Spark 递增无效或不存在的 Parquet 文件。
我们发现数据报 InstantTime '20210730142459' 被压缩一次,导致数据报重写和 writetoken 更改。
2 排除其他因素
我们有一个新的插入操作,没有生成日志文件,我们还没有执行压缩操作。但是,只要更新插入一对原始表,就会生成并压缩日志。
3 解决方案
之前针对错误数据的尝试,
查询campAction的状态:
在 HUDi-cli 上运行“compaction repair --instant 20210730112532”命令。 sh 服务器修复压缩。
3.2 解决方案 2
调整 Hudi 压缩操作,例如 hoodie.com paction. Strategy
。尚未找到有用的调整策略。
已经尝试过,但是 upsert 导致增量查询失败并没有帮助。
希望大家能指出正确的解决方法,谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)