1. 概述
1.1 版本
FineBI 版本 | 功能變動 |
---|---|
6.0 | - |
1.2 應用場景
本文將介紹如何連結 Apache Impala 資料源。
注:Impala裏存在多個資料庫,一個資料連結只能連結一個資料庫,不支援單個資料連結連結多個資料庫。
2. 準備工作
2.1 版本和驅動
下載驅動,並將其上傳至 FineBI,如何上傳可參見:驅動管理 2.1 節
支援的資料庫版本 | 驅動包連結 |
---|---|
Impala 2.2 Impala 2.3 Impala 2.8 Impala 2.9 Impala 2.10 | |
Impala 2.10 kudu1.5 |
ClouderaImpalaJDBC41_2.5.43.rar |
2.2 收集連結資訊
在連結資料庫之前,請收集以下資訊:
資料庫所在伺服器的 IP 位址和埠號;
資料庫的名稱;
若是帳號密碼認證,需要收集帳號和密碼;若是 Kerberos 認證,需要收集用戶端 principal 和 keytab 鍵路徑;
3. 具體連結步驟
1)以管理者身分登入 FineBI ,點選「管理系統>資料連結>資料連結管理」,點選「新建資料連結」,如下圖所示:
注:如果非管理者使用者想要配置資料連結,需要管理者給其分配管理系統下資料連結節點的權限,具體操作請查看 資料連結權限
2)選擇 APACHE IMPALA 圖示,如下圖所示:
3)驅動切換為「自訂」選擇 2.1 節上傳的驅動,然後輸入 2.2 節的連結資訊。若使用者需要在直連版本下使用該資料連結,需要在 URL 後增加後綴參數 ;UseNativeQuery=1 ,如下圖所示:
Kerberos 認證方式詳情可參見:資料連結 kerberos 認證
若 Impala 資料庫存在認證,則需要在 URL 後加入AuthMech參數,不同參數值代表了不同的認證,如下表所示:
注:若資料庫沒有帳號密碼時不需要加該參數。
值 | 含義 |
---|---|
3 | username and password(帳號密碼認證) |
2 | username(帳號認證) |
1 | kerberos(Kerberos認證) |
0 | 不認證 |
URL 格式為:jdbc:impala://ip:port/dbname;authmech=n( n 可以等於 0、1、2、3 分別代表上面的認證方式)
帳號密碼認證:AuthMech 參數值為 3 ,則 URL 格式為:jdbc:impala://ip:port/dbname;authmech=3
帳號認證:AuthMech 參數值為 2 ,則 URL 格式為:jdbc:impala://ip:port/dbname;authmech=2
Kerberos 認證:AuthMech 參數值為 1 ,則 URL 格式為:jdbc:impala://ip:port/dbname;authmech=1
若資料庫的認證方式為 Kerberos 認證,除了要加 AuthMech 參數,需填入登入過 kdc 的用戶端名稱、keytab 鍵路徑和 Kerberos 認證對應 URL(加上AuthMech、KrbHostFQDN、KrbServiceName 三個參數)
參數 | 值 | 含義 |
---|---|---|
AuthMech | 1 | Kerberos 認證 |
KrbHostFQDN | impala server 為 krb5.conf 檔案中 admin_server 的值 | 指定連結哪臺伺服器的 Impala |
KrbServiceName | 對應的服務名 | 伺服器的別名,請參見 參數含義 |
URL 格式為:jdbc:impala://ip:port/default;AuthMech=1;KrbHostFQDN=hostalias;KrbServiceName=impala
例如:jdbc:impala://192.168.5.127:21050/default;AuthMech=1;KrbHostFQDN=quickstart.cloudera;KrbServiceName=impala,具體請參見 資料連結Kerberos認證
4)點選「測試連結」,若連結成功則點選「儲存」,如下圖所示:
4. 新增資料庫的表至 FineBI
5. 注意事項
5.1 資料庫注意點
連結 Apache Impala 資料庫時,FineBI 在資料查詢的時候忽略大小寫,欄位查詢結果都為小寫。
impala 不支援 date 型別,支援 timestamp。
impala 不支援多個 distinct count,多個去重記錄數預覽 SQL 會報錯。
5.2 版本升級後連結失敗
問題描述:
升級後連結失敗並報錯:Error initialized or created transport for authentication: java.io.IOException,如下圖所示:
原因分析:
升級後,Jass 代碼內建造出的 .ini 檔案會丟失掉,導致連結失敗。
升級後
解決方案:
將 Kerberos 認證的方式更改為第二種,詳情可參見:Kerberos 認證方式二