提示:4.0.29 之前版本,為保證寫入效能,建議使用 Hadoop Hive(HDFS) 資料連結。
提示:
1. 概述
1.1 版本
| FineDataLink 版本 | 功能變動 |
|---|---|
| 4.0.4.2 | - |
| 4.0.29 | 建立資料連結時,Hadoop Hive (HDFS)和Hadoop Hive資料源,合併為Hadoop Hive |
| 4.1.3 | 資料寫入 Hive 資料庫時,支援建立、寫入分割槽表 |
| 4.1.13.2 |
|
| 4.2.12.3 | HDFS設定新增「OSS-HDFS」配置方式 |
| 4.2.12.4 | HDFS 配置中:
|
1.2 應用場景
Hadoop 是個很流行的分佈式計算解決方案,Hive 是建立在 Hadoop 上的資料倉儲基礎構架。
FineDataLink 支援連結 Hadoop Hive ,進行定時任務讀寫。
2. 準備工作
2.1 前提條件
詳情請參見:前提條件
2.2 版本和驅動
下載驅動,並將其上傳至 FineDataLink,如何上傳可參見:驅動管理 2.1 節。
| 支援的資料庫版本 | 驅動包下載 | 日誌jar下載 |
|---|---|---|
| hive_1.1 | 在上傳驅動包時,需要解壓「日誌jar」檔案和驅動一起上傳至 FineDataLink | |
| Hadoop_Hive_1.2;hive2.3;hive2.1.2;hive2.1.1;hive3.3.1 | ||
注:若需要將 Hive 作為寫入資料源時,優先使用該驅動。 |
2.3 收集連結資訊
在連結資料庫之前,請收集以下資訊:
資料庫所在伺服器的 IP 地址和埠號。
資料庫的名稱。
若是帳號密碼認證,需要收集帳號和密碼;若是 Kerberos 認證,需要收集使用者端 principal 和 keytab 金鑰路徑。
HDFS 檔案系統地址(IP 地址和埠號)(若只是讀取 Hadoop Hive 資料庫中的資料,無需準備該資訊;若需要向Hadoop Hive 資料庫中寫入資料,為保證寫入效能,需要準備該資訊)。注:同時需要保證 FineDataLink 所在伺服器能存取 HDFS 檔案系統埠,例如 HDFS 檔案系統預設埠為 8020,且伺服器開啟了防火牆,則需要參考下文開放 8020 埠。
Windows 系統開放埠步驟請參見:Windows伺服器設定出入站規則
Linux 系統開放埠步驟請參見:Linux防火墻使用及配置
若需要寫入 Hive 壓縮表,4.1.13.2 及之後的版本可以配置資料連結 URL,範例為:jdbc:hive2://192.168.101.119:10000/hive?hive.exec.compress.output=true;mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec;hive.stats.autogather=false
2.4 具體連結步驟
建立資料連結步驟請參見:建立並管理資料源
配置資料連結時,驅動需要切換為「自訂」,換為本文 2.2 節的驅動。
部分設定項說明見下表:

2.4.1 基礎配置
Hive「認證方式」可選擇兩種:帳號密碼、Kerberos,說明見下表:
| 設定項 | 說明 |
|---|---|
| 帳號 | 帳號密碼:輸入資料庫的帳號和密碼
|
| Kerberos | Kerberos 認證方式詳情可參見:資料連結 Kerberos 認證
使用 Kerberos 認證需要注意以下事項:
|
2.4.2 HDFS設定
HDFS 配置方式有兩種:HDFS、OSS-HDFS(4.2.12.3 及之後版本新增),說明見下表:
注:若需要向 Hadoop Hive 資料庫中寫入資料,為保證寫入效能,需要配置該設定項;若只是讀取 Hadoop Hive 資料庫中的資料,無需配置該設定項。
配置方式為「HDFS」時,設定項說明如下表:

| 設定項 | 說明 | |
|---|---|---|
| HDFS 地址 | 為 Hadoop HDFS檔案系統處於活躍狀態的節點地址 格式:hdfs://<hostname>:<port>/<path> 範例:hdfs://nn01:8020/user/ 確定 HDFS 地址中 IP 和埠的方法請參見:確認HDFS地址中的IP和埠 4.1.13.2 以及之後的版本支援填寫多個地址,多個地址用逗號隔開,例如:hdfs://ip1:port1,hdfs://ip2:port2,hdfs://ip3:port3 | |
| HDFS 認證方式 | 無認證 當 Hive 的認證方式選擇「帳號密碼」時,支援配置 HDFS 使用者,填寫後,使用配置的帳號作為連結 HDFS 的使用者; 如果留空,預設使用啟動 Tomcat 時的伺服器使用者,連結 HDFS 進行讀寫 | Kerberos(4.2.12.4 及之後版本新增) 配置項同 Hive 資料連結基礎配置中的 Kerberos 配置,詳情請參見上方表格; 允許 Hive 資料連結和 HDFS 連結配置不同的認證方式 |
| HDFS裝載路徑 | 可以選擇:預設、自訂 預設時為 HDFS 根目錄 /fdl 自訂填寫路徑時,需要從根目錄開始 | |
| 擴展參數項 | 對 HDFS 做自訂參數配置 | |
配置方式為 「OSS-HDFS」時,設定項說明如下表所示:

| 設定項 | 說明 |
|---|---|
| OSS-HDFS地址 | 格式:oss://<BucketName>.<BucketEndpoint>/<path> 範例:oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/dir/ |
AccessKey ID AccessKey Secret | AccessKey ID用於標識使用者 AccessKey Secret是使用者用於加密簽章字串和OSS用來驗證簽章字串的金鑰 |
3. 使用資料源
3.1 資料開發-定時任務
3.1.1 資料去向與映射-分割槽表
定時任務支援選擇分割槽表作為資料去向,如下圖所示:

詳情請參見:讀取、建立、寫入分割槽表
定時任務自動建表支援指定分割槽鍵,如下圖所示:
注:Hive 資料庫不支援動態分割槽鍵的值為中文。

支援作為分割槽鍵的欄位類型:
| 分類 | 欄位類型 |
|---|---|
| Hive分割槽鍵支援的欄位類型 |
|
| Hive分割槽鍵不支援的欄位類型 |
|
分割槽存在層級的關系,基於順序,自動形成層級,第 1 個分割槽鍵為一級分割槽,第 2 個分割槽鍵為二級分割槽,以此類推,最多 8 級分割槽。
若某個欄位被定義為分割槽欄位,其在欄位映射裏預設處於末尾。
3.1.2 資料去向與映射-儲存格式
4.2.12.4 及之後版本,Hive 支援配置「儲存格式」。

寫入 Hive 資料庫時:
1)若目標表為自動建表,支援的儲存格式:「ORC」、「HOLODESK」、「PARQUET」。
2)若目標表為已存在表,不限制儲存格式。
3)不同的檔案格式支援不同的進階配置項,可以透過手動建表進行配置:
ORC:可以指定壓縮類型、壓縮快大小、行組級別索引資料量大小、建立行級別索引等
Textfile:可以指定行列分隔符、壓縮格式等
Parquet:可以指定壓縮類型、啟動字典編碼、每個頁面大小、寫入檔案塊大小等
4)若制定目標表檔案儲存格式必須為 Textfile 且資料中有預設行列分隔符時,會出現資料錯位或一筆資料被拆分成多條。建議透過建立 ORC 表來避免這種情況的發生。如果指定要用 Textfile 格式儲存,建議透過手動建表時修改 Textfile 預設分隔符為資料中不會出現的字元。
3.1.2 寫入方式
當選擇的目標表是分割槽表(包含分割槽鍵),或自動建表時定義了分割槽鍵,寫入方式新增「分割槽寫入」設定項。如下圖所示:
詳情請參見:讀取、建立、寫入分割槽表

4. 相容說明
4.2.12.4 之前的版本,升級至 4.2.12.4 及之後的版本:
1)對於已存在的資料連結:
當 Hive 是帳號密碼認證時,HDFS 認證方式為無認證,HDFS 帳號與之前一緻;
當 Hive 是 Kerberos 認證時,HDFS 認證方式為 Kerberos 認證,配置項和其內容與 Hive 的 Kerberos 認證的配置保持一緻;
HDFS 裝載路徑為預設值;
2)寫入 Hive 選擇自動建表的任務,曆史版本自動建表的檔案格式均為 Textfile;
3)寫入 Hive 選擇已存在表的任務,使用者開啟任務時,或者點選節點時獲取表格式進行展示;
