【背景】
用户在使用Catalog刷新元数据refresh语句时
refresh external table hive.ads.ads_ec_sams_cate_repurchase_item_sum_di;
出现Error:
ERROR 1064 (HY000): Unexpected exception: refresh external table failed: refresh fe 10.128.8.89 failed: Failed to update remote files;
这个为什么会抛出 10.128.8.89 这我也不太清楚,于是
show frontends;
原来这是一个leader节点
- 不容置疑,直接连接这个leader节点,再次执行语句refresh external table语句
.这次真相出现:
ERROR 1064 (HY000): Unexpected exception: com.starrocks.connector.exception.StarRocksConnectorException: Failed to get hive remote file’s metadata on path: RemotePathKey{path=‘cosn://wmhdprd-1313306507/user/hive/warehouse/ads.db/ads_ec_sams_cate_repurchase_item_sum_di/ts=2023-07-10’, isRecursive=false}. msg: No such file or directory: s3a://wmhdprd-1313306507/user/hive/warehouse/ads.db/ads_ec_sams_cate_repurchase_item_sum_di/ts=2023-07-10
- orc文件不存在,检查过后发现,真的不存在。
ls: `cosn://wmhdprd-1313306507/user/hive/warehouse/ads.db/ads_ec_sams_cate_repurchase_item_sum_di/ts=2023-07-10’: No such file or directory
再次判断分区是否存在
| ts=2023-07-07 |
| ts=2023-07-08 |
| ts=2023-07-09 |
| ts=2023-07-10 |
| ts=2023-07-11 |
±---------------+
346 rows selected (0.224 seconds)
0: jdbc:hive2://10.128.8.2:2181,10.128.8.8:21> show partitions ads.ads_ec_sams_cate_repurchase_item_sum_di;
很明确分区是存在的。
临时解决办法:
- 删除这个表没有文件的分区
- 重建一个新表, 通过insert的方式重新生成新的表
规则是: 分区存在, 分区路径下必须要有文件, 否则解析失败
永久解决办法:
这需要官方来复现修复