Table or view not found,表其实是存在的

这个表有的

嗯,下一个批次跑就正常了,偶尔几天汇报一次,23/11/09 00:47:22 ERROR driver.BatchCollectTotal$: Table or view not found: tidb_rpt.up_monitor_no; line 17 pos 106;

可以去github问一问,2.4的版本太旧了。我这边用的是3.2.1的版本,没有出现过你描述的问题。。

你可以在出现问题的语句之前添加一行show tables from tidb_rpt(记得用spark-sql),这样下次再出问题就可以确定是不是由于缓存中的元数据不正确所导致的问题。如果show tables from tidb_rpt的结果出现了up_monitor_no表,但是依旧提示Table or view not found,那么可能就要寻找是否是其他因素引起的问题了

重新看了下代码,如果内存中没有找到表,那么tispark会重新获取一次元数据,不应该出现Table not found才对,还是没想到问题原因。。



我这边也同样出现了这个问题,目前定位到的原因是缓存中的库表数据和元数据不一致


方法的force入参是我自己加的

缓存更新逻辑是使用当前缓存中的version与tidb元数据的version进行比较,如果缓存的version大于tidb元数据的version则进行更新
如果tidb元数据更新不频繁,缓存中的元数据是无法被更新的,这种情况下,错误的数据会一直存在于缓存中。

但是为什么缓存中的数据和tikv中的元数据会不一致,目前还没有找到原因

我这边做了重新加载缓存的处理


同时在业务出现问题的时候修改为使用jdbc进行数据读取

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。