处理批量异常
HBase API 提供了两种批量发送多项操作的方式:
Table#batch(List, Object[])
可将多项获取和更改操作组合成单一批量操作。BufferedMutator#mutate(List<? extends Mutation> mutations)
可将多项更改操作组合成一项或一系列批量操作。
使用 Java 版 Cloud Bigtable HBase 客户端时,这两种方法都会抛出 RetriesExhaustedWithDetailsException
。当一项或多项批量操作因任何原因(如由于连接失败)而失败时,都会引发这种异常。此异常会提供失败请求的列表,以及有关导致每个请求失败的异常的详细信息。
RetriesExhaustedWithDetailsException
本身并不会表明请求失败的原因。您必须调用 RetriesExhaustedWithDetailsException#getCauses()
来检索每个失败请求的详细异常情况,然后可以记录每个详细异常的相关信息,以帮助您诊断故障:
try {
mutator.mutate(mutationList);
} catch (RetriesExhaustedWithDetailsException e) {
for (Throwable cause : e.getCauses()) {
cause.printStackTrace();
}
throw e;
}
调用 flush
或 close
时也可能会抛出异常。同样的错误处理方式也适用。