1

@[目录]

0 原因猜测

每次我们更新目标时,hoodie 都会生成一个日志并对其进行压缩,从而导致该时间点之前的任何增量查询终止。

1

以下是与原始标签有关的所有操作。

1.1 操作一(更新)

先对原表进行upsert操作(更新370条数据),然后进行增量查询,结果成功

使用hadoop命令查询HDFS文件,出现log log,数据写入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 方案二

调整 Hudi 压缩操作,如hoodie.com paction. Strategy. 尚未找到有用的调整策略。

已经进行了尝试,但是 upsert 导致增量查询失败并没有帮助。

希望大家能指出正确的解决方法,谢谢。

4

0 回答 0