故障排除JDBC、ODBC連接

學習如何解決磚JDBC和ODBC連接錯誤。

寫的亞當Pavlacka

去年發表在:2022年8月15日

本文提供的信息來幫助你解決你的磚JDBC / ODBC的服務器之間的連接和BI工具和數據來源。

語句執行後獲取結果集是緩慢的

查詢執行後,您可以通過調用獲取結果行next ()方法返回的結果集反複。這種方法觸發請求司機節儉服務器獲取一批行如果緩衝的疲憊。我們發現批量的大小顯著影響性能。默認值在大多數的JDBC / ODBC驅動程序過於保守,我們建議您至少100000。聯係BI工具提供者如果你不能訪問這個配置。

在創建連接超時/異常

一旦服務器主機名,您可以從一個終端運行以下測試來檢查連接到倉庫。

curl https:// <服務器主機>:<口> / sql / protocolv1 / o / 0 / < cluster-id > - h“授權:基本美元(echo - n '標記:< personal-access-token > ' | base64)”

如果連接超時,請檢查您的網絡連接的設置是否正確。

TTransportException

如果響應包含一個TTransportException(預計錯誤)如下,這意味著網關正常運轉,通過有效身份證件。如果你不能夠聯係相同的憑證,檢查客戶端使用正確配置和使用最新的辛巴司機(> = 2.6.22版):

< h2 > HTTP錯誤:500 < / h2 > < p >訪問/ cliservice問題。原因:< pre > javax.servlet。ServletException: org.apache.thrift.transport.TTransportException < / pre > < / p >

引用臨時視圖

如果響應包含消息表或視圖了火花…temp_view這意味著一個臨時的觀點是不正確的客戶端應用程序中引用。辛巴有一個內部配置參數UseNativeQuery決定是否查詢翻譯之前提交到節儉服務器。默認情況下,參數設置為0,在這種情況下,辛巴可以修改查詢。特別是,辛巴創建一個自定義#臨時模式為臨時視圖和預計的客戶機應用程序引用一個臨時視圖模式。你可以通過設置避免使用這種特殊的別名UseNativeQuery = 1從修改查詢,從而防止辛巴。在這種情況下,辛巴節儉直接將查詢發送到服務器。然而,客戶端需要確保查詢都寫在火花預計的方言,即HiveQL。

總之,你有以下選項來處理臨時視圖在辛巴和火花:

  • UseNativeQuery = 0和參考視圖在名字前麵加上與#臨時
  • UseNativeQuery = 1並確保查詢寫在方言,火花預計。

其他錯誤

  • 如果你得到這個錯誤401年未經授權檢查您使用的憑證:
    < h2 > HTTP錯誤:401 < / h2 > < p >問題訪問/ sql / protocolv1 / o / 0 /測試集群。原因:< >以前未經授權< / pre > < / p >
    如果您使用個人訪問令牌驗證,驗證用戶名令牌(而不是你的用戶名)和密碼個人訪問令牌(與dapi標記應該開始)。
  • 反應,如404年,沒有找到通常表明問題定位指定集群:
    < h2 > HTTP錯誤:404 < / h2 > < p >問題訪問/ sql / protocolv1 / o / 0 / missing-cluster。原因:< pre > RESOURCE_DOES_NOT_EXIST:集群沒有發現匹配:missing-cluster < / pre > < / p >
  • 如果你看到以下錯誤在您的應用程序log4j日誌:
    log4j:“org.apache.log4j錯誤。FileAppender”對象不分配一個“com.simba.spark.jdbc42.internal.apache.log4j.Appender”變量。
    可以忽略這些錯誤。辛巴內部log4j圖書館是陰影,以避免衝突與log4j庫在應用程序中。然而,辛巴可能仍然加載log4j配置您的應用程序,並嚐試使用一些定製的log4j輸出源。這次嚐試失敗的陰影圖書館。相關的信息仍然是捕獲日誌中。