處理批次例外狀況
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
時,也可能會擲回例外狀況。錯誤處理方式相同。