1. 概述
1.1 版本
| FineDataLink版本 | 功能說明 |
|---|---|
| 3.5 | 定時任務中,資料輸入適配 Impala |
| 4.0.1.1 | 定時任務中,資料匯出適配 Impala |
| 4.1 | 資料服務支援 Impala 資料源 |
| 4.1.8.3 | 適配Impala 3.4、Impala 4.1 |
| 4.2.0.2 | 資料連結中新增「Kudu設定」:
|
| 4.2.17.5 | 「連結池設定」中新增「初始化SQL」設定項,可配置初始化 SQL 語句 |
1.2 功能簡介
FineDataLink 支援連結 Apache Impala,進行定時任務讀取和寫入、資料服務發佈、資料管道寫入
4.2.0.2 及之後版本,資料連結中新增「Kudu設定」:
定時任務支援讀寫 Kudu 表。
管道任務支援寫入 Kudu 表。
資料服務支援發布 Kudu 資料。
2. 配置資料連結
2.1 前提條件
1)詳情請參見:前提條件
2)4.2.0.2 及之後版本,若想讀取、寫入 Kudu 表,需要使用 1.7.0 及以上版本的 Kudu。
3)定時任務&管道任務中,若想寫入 Apache Impala,必須配置「Kudu地址」。
4)若需要使用 kudu 表,必須在%FineDataLink%/webapps/webroot/WEB-INF/lib 下放置兩個 JAR ,如下圖所示:
2.2 版本和驅動
下載驅動,並將其上傳至 FineDataLink,如何上傳可參見:驅動管理 第 2 節
| 支援的資料庫版本 | 驅動包連結 |
|---|---|
Impala 2.2 Impala 2.3 Impala 2.8 Impala 2.9 Impala 2.10 Impala 3.4 Impala 4.1 | |
| Impala 2.10 kudu1.5 |
ClouderaImpalaJDBC41_2.5.43.rar |
2.3 收集連結資訊
在連結資料庫之前,請收集以下資訊:
資料庫所在伺服器的 IP 地址和埠號。
資料庫的名稱。
若是帳號密碼認證,需要收集帳號和密碼;若是 Kerberos 認證,需要收集使用者端 principal 和 keytab 金鑰路徑。
4.2.0.2 及之後版本,若需要讀取或寫入 Kudu 表,需要準備 Kudu 地址。
2.4 具體連結步驟
建立資料連結步驟請參見:建立並管理資料源
需注意:
配置資料連結時,驅動需要切換為「自訂」,換為本文 2.2 節的驅動 。

各設定項說明如下表所示:
注:4.2.17.5 及之後版本,「連結池設定」中新增「初始化SQL」設定項,可配置初始化 SQL 語句;詳情請參見:建立並管理資料源
| 設定項 | 說明 |
|---|---|
| 認證方式 | 支援 Kerberos 認證,Kerberos 認證方式詳情可參見:資料連結 Kerberos 認證 |
| Kudu 地址 | 4.2.0.2 及之後版本支援該設定項,定時任務&管道任務中,若想寫入 Apache Impala,必須配置「Kudu地址」 指定 Kudu 的 Master 地址,格式為 hostname:port,如果有多個 Master,用逗號隔開 注:Kudu 地址裏不能配置 IP,要配置 hostname 才可以正常連結。 在配置 Kudu 地址前,需要在 FineDataLink 所在伺服器的系統 hosts 檔案裏,為所有 Kudu 伺服器配置 hostname 和 IP 的對應關係。
注:如果是維運平台部署的FineDataLink,host 設定是透過維運平台的開發者模式進行配置,詳情參見:host設定 檔案裏的映射配置範例: 配置資料連結,填寫 host 映射後的內容:
|
注:kudu 不支援修改欄位類型。
3. 使用資料源
3.1 資料開發-定時任務
1)定時任務中,支援讀取和寫入 Apache Impala,若寫入 Apache Impala,需要在資料連結中配置「Kudu地址」。
注:寫入 Kudu 表時,由於 Kudu 表是不支援 truncate table 文法的,因此在寫入方式為「清空目標表,再寫入資料」且清表方式為 TRUNCATE 時,處理邏輯為:先執行刪表後建表,再寫入資料,會有刪除後無法重建立表的風險,為了避免無法重建,fanruan.log 日誌裏面記錄了建表 SQL 語句。

2)定時任務中寫入 Apache Impala 時,目標表若選擇「已存在表」,會校驗該表是不是 Kudu 表,若不是,不允許寫入。
3)定時任務中寫入 Apache Impala 時,不支援設定邏輯主鍵,必須標記物理主鍵。
4)定時任務中支援讀寫 Kudu 分割槽表:
目標表為已存在表時,點選「查看分割槽鍵設定」按鈕,可查看具體的分割槽鍵設定。
目標表為自動建表時,配置物理主鍵後,支援配置分割槽鍵。如下圖所示:

各設定項說明如下表所示:
| 設定項 | 說明 | ||||||
|---|---|---|---|---|---|---|---|
| 分割槽方式 | 支援兩種:範圍分割槽、哈希分割槽 支援同時指定範圍分割槽和哈希分割槽,此時使用者只需要將兩個分割槽方式都設定即可 | ||||||
| 分割槽配置-範圍分割槽 |
| ||||||
| 分割槽配置-哈希分割槽 | 可配置多組哈希分區
|
分割槽鍵彈框配置完成後,將已選的分割槽欄位標記在欄位映射中。
3.2 管道任務
4.2.0.2 及之後版本,管道任務支援寫入 Impala 資料庫的 Kudu 表,目標表若選擇「已存在表」,會校驗該表是不是 Kudu 表,若不是,不允許寫入。
管道任務寫入 Kudu 表時,不支援無主鍵同步。
管道任務的目標表為「自動建表」時,支援配置分割槽鍵,配置分割槽鍵的介面與功能說明與定時任務配置分割槽鍵相同,請參見本文 3.1 節內容。
3.3 資料服務
4.2.0.2 及之後版本,資料服務支援發布 Kudu 資料。
4. 注意事項
1)問題描述:
在使用資料連結運作定時任務時,運作日誌出現報錯:建表 table owner must not be null or empty 的異常,如下圖所示:

解決方案:
需要在建立資料連結位置 URL 後新增參數:;UseSasl=0;AuthMech=0;UID=impala

2)問題描述:
在資料連結時報錯:ImpalaJDBCDRIVER 500051。
解決方案:
需要在建立資料連結位置 URL 後新增參數:;UseSasl=0;AuthMech=3;UID=impala;PWD=

3)問題描述:
在運作定時任務(使用 kudu 表)時出現報錯,有如下埠沒有放開:

解決方案:
impala-kudu 除了三個 master 節點外,還有 5 個 tserver 節點,也需要映射。供遠端 rpc 呼叫,所以要將這 5 個埠:7050、7150、7250、7350、7450映射到外部。

