Databricks
您可以使用 Databricks 作為資料管道或複寫任務中的目標資料平台。在資料管道中,可以在目標平台執行各種 ELT 操作,包括儲存資料、轉換資料、建立資料超市和註冊資料。另一方面,複寫任務涉及將資料直接從來源系統複寫至具有基本轉換功能但不支援 ELT 操作的目標系統。
將 Databricks 設定為目標包含:
設定雲端預備區域
使用 Databricks 目標連接器時,您還需要定義一個雲端預備區域,在套用和儲存資料與變更之前,將其預備在該處。支援以下儲存平台:
設定到 Databricks 的連線
提供預備設定後,請執行以下操作:
-
在連線中,按一下建立連線。
-
選取 Databricks 目標連接器,然後提供以下設定:
資料目標
資料閘道
只有在無法從 Qlik Cloud 存取目標資料庫且只能使用私人連結存取時 (例如若將在虛擬私人雲端中),才需要 資料移動閘道。在此情況下,選取您要用來存取目標資料庫的 資料移動閘道。
根據您的使用情況,這會是為了從資料來源移動資料而部署的相同或不同 資料移動閘道。
如需關於 資料移動閘道 使用案例的資訊,請參閱 何時需要 資料移動閘道? 和 常見使用案例。
如果可以直接從 Qlik Cloud 存取目標資料庫,請選取無。
連線屬性
- 主機:Databricks 工作區的主機名稱。
- 連接埠:存取工作區所透過的連接埠。
- HTTP 路徑:正在使用的叢集路徑。
驗證
-
驗證方法 - 選取以下其中一項:
-
OAuth:提供以下資訊:
資訊備註OAuth 驗證先決條件:
- 確保您的 Databricks 資料庫已設定為使用 OAuth。如需指示,請參閱廠商的線上說明。
- 如果您使用 資料移動閘道 存取資料庫,則需要 資料移動閘道 2024.11.30 或更新版本。
-
用戶端 ID:您應用程式的用戶端 ID。
-
用戶端密碼:您應用程式的用戶端密碼。請注意,如果您編輯連線,用戶端密碼將作為安全措施被移除,您將需要重新輸入。
- 個人存取 Token:在Token欄位中,輸入您用於存取工作區的個人 Token。
-
目錄屬性
按一下載入目錄以載入可用的目錄,然後選取一個目錄。如果您的環境未設定任何目錄,請選取hive_metastore,這是預設目錄。
您需要透過在 Databricks 中定義外部位置,允許資料工作存取外部 (未受管理) 表格。如需指導方針,請參閱:
內部屬性
內部屬性適用於特殊使用案例,因此不會在對話方塊中公開。您應僅在 Qlik 支援人員的指示下使用它們。
使用欄位右側的 和
按鈕,根據需要新增或移除屬性。
名稱
連線的顯示名稱。
先決條件
一般權限
- 在Qlik Talend Data Integration伺服器機器上的時間必須為準確。
- Databricks 表格權限: Qlik Talend Data Integration 需要權限才能進行以下 Dataricks 表格操作:CREATE、DROP、TRUNCATE、DESCRIBE 和 ALTER 表格。
- 在 ADLS Gen2 檔案系統的存取控制 (IAM) 設定中,指定「儲存 Blob 資料參與者」角色至 Qlik Talend Data Integration (AD App ID)。可能需要幾分鐘角色才會生效。
- 為了讓 Qlik Talend Data Integration 透過 ODBC 連接至 Databricks 叢集,使用者必須在其 Databricks 帳號被授權「可以附加」權限。
- 需要有效安全 Token 才可存取 Databricks。在終端設定中組態 Databricks ODBC 存取欄位時,必須指定 Token。
-
當透過 Microsoft Azure Data Lake Storage (ADLS) Gen2 組態新叢集時,必須在「Spark Config」區段新增以下行。
spark.hadoop.hive.server2.enable.doAs false -
為了能夠從 Databricks 叢集存取儲存目錄,使用者必須針對該 Storage 帳戶和金鑰新增(在 Spark Config 中的)組態。
範例:
fs.azure.account.key.<storage-account-name>.dfs.core.windows.net <storage-account-access-key>
如需更多資訊詳情,請參考 Databricks 線上說明文件:https://docs.databricks.com/clusters/configure.html#spark-configuration
-
最佳作法不是針對 Databricks 資料庫使用根位置 (/Usr/Hive/Warehouse/) ,這麼做會影響效能。
儲存存取權限
必須設定 Databricks SQL 運算以存取雲端儲存。如需指示,請參閱廠商的線上說明。
驅動程式設定
僅當您透過 資料移動閘道 存取資料庫時,才需要驅動程式。在這種情況下,您需要在 資料移動閘道 機器上安裝驅動程式。
您可以使用驅動程式安裝公用程式 (建議) 或手動安裝 driver。只能在不太可能發生的事件 (您在使用驅動程式安裝公用程式時遇到問題) 中嘗試手動安裝。
使用驅動程式安裝公用程式安裝驅動程式
此區段描述如何安裝所需的 driver。該流程涉及執行將會自動下載、安裝並設定所需 driver 的指令碼。您也可以執行指令碼,以根據需求更新並解除安裝 driver。
準備安裝
-
確認 Python 3.6 或更高版本安裝於 Data Movement 閘道伺服器。
Python 會預先安裝在大部分的 Linux 發行版。您可以執行下列命令,以查看哪個 Python 版本安裝在您的系統上:
python3 --version
安裝 driver
若要下載並安裝 driver:
-
停止 Data Movement gateway 服務:
sudo systemctl stop repagent
-
可自選,確認服務已停止:
sudo systemctl status repagent
狀態應如下所示:
Active: inactive (dead) since <timestamp> ago
-
在 Data Movement 閘道機器上,將工作目錄變更為:
opt/qlik/gateway/movement/drivers/bin
-
執行下列命令:
語法:
./install databricks
若無法下載 driver (由於存取限制或技術問題),將會顯示訊息,指示您到哪裡下載 driver 以及在 Data Movement 閘道機器上的何處複製。完成後,再次執行 install databricks 命令。
否則,就會顯示 driver 的 EULA。
-
執行下列其中一個動作:
- 重複按下 [Enter] 以緩慢瀏覽 EULA。
- 重複按下空格鍵以快速瀏覽 EULA。
- 按下 q 以結束授權文字並呈現 EULA 接受選項。
-
執行下列其中一個動作:
- 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
- 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
-
輸入「v」並按下 [Enter] 以再次檢視 EULA。
-
等待安裝完成 (以「完成!」指示),然後開始 Data Movement gateway 服務:
sudo systemctl start repagent
-
可自行選擇確認服務已開始:
sudo systemctl status repagent
狀態應如下所示:
Active: active (running) since <timestamp> ago
將會安裝 driver。
更新 driver
若您想要在安裝提供的 driver 之前解除安裝先前的 driver 版本,請執行更新命令。
若要下載並更新 driver:
-
停止 Data Movement gateway 服務:
sudo systemctl stop repagent
-
可自選,確認服務已停止:
sudo systemctl status repagent
狀態應如下所示:
Active: inactive (dead) since <timestamp> ago
-
在 Data Movement 閘道機器上,將工作目錄變更為:
opt/qlik/gateway/movement/drivers/bin
-
執行下列命令:
語法:
./update databricks
若無法下載 driver (由於存取限制或技術問題),將會顯示訊息,指示您到哪裡下載 driver 以及在 Data Movement 閘道機器上的何處複製。完成後,再次執行 update databricks 命令。
否則,就會顯示 driver 的 EULA。
-
執行下列其中一個動作:
- 重複按下 [Enter] 以緩慢瀏覽 EULA。
- 重複按下空格鍵以快速瀏覽 EULA。
- 按下 q 以結束授權文字並呈現 EULA 接受選項。
-
執行下列其中一個動作:
- 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
- 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
- 輸入「v」並按下 [Enter] 以從頭檢閱 EULA。
-
等待安裝完成 (以「完成!」指示),然後開始 Data Movement gateway 服務:
sudo systemctl start repagent
-
可自行選擇確認服務已開始:
sudo systemctl status repagent
狀態應如下所示:
Active: active (running) since <timestamp> ago
將會解除安裝舊版 driver,並安裝新版 driver。
解除安裝 driver
若您想要解除安裝 driver,請執行解除安裝命令。
若要解除安裝 driver:
-
停止設定為使用此連接器的所有任務。
-
在 Data Movement 閘道機器上,將工作目錄變更為:
opt/qlik/gateway/movement/drivers/bin
-
執行下列命令:
語法:
./uninstall databricks
將會解除安裝 driver。
手動安裝驅動程式
只有在自動驅動程式安裝無法成功完成時,才能嘗試手動安裝 driver。
安裝 ODBC 驅動程式
安裝 資料移動閘道 後,下載 SimbaSparkODBC-<version>-LinuxRPM-64bit.zip 檔案。您可以在 /opt/qlik/gateway/movement/drivers/manifests/databricks.yaml. 中的 binary-artifacts 下找到支援版本的直接下載連結。下載完成後,將檔案複製到 資料移動閘道 機器。
-
停止 Data Movement gateway 服務:
sudo systemctl stop repagent
-
選擇性地,確認服務已停止:
sudo systemctl status repagent
-
在 Data Movement gateway 機器上安裝驅動程式。
-
安裝後,確保以下區段出現在 /etc/odbcinst.ini 檔案中:
-
啟動 Data Movement gateway 服務:
sudo systemctl start repagent
-
選擇性地,確認服務已啟動:
sudo systemctl status repagent
狀態應如下所示:
Active: active (running) since <timestamp> ago
狀態應如下所示:
Active: inactive (dead) since <timestamp> ago
[Databricks ODBC Driver] Driver=/opt/databricks/databricksodbc/lib/64/libdatabricksodbc64.so
安裝 JDBC 驅動程式
-
下載 databricks-jdbc-<version>.jar 檔案。您可以在 /opt/qlik/gateway/movement/drivers/manifests/databricks.yaml. 中的 binary-artifacts 下找到支援版本的直接下載連結。下載完成後,將 JAR 檔案複製到 資料移動閘道 機器上的以下資料夾:
/opt/qlik/gateway/movement/qcs_agents/qdi-db-commands/lib
-
重新啟動 資料移動閘道 服務,並透過執行 資料移動閘道 服務命令 中描述的命令來檢查它是否已啟動。
連接埠
需開啟防火牆連接埠 443 才能進行輸入通訊。
資料類型
下表顯示使用 Qlik Cloud 時支援的 Databricks 資料類型,以及從 Qlik Cloud 資料類型的預設對應。
會保留原生資料類型資訊,並顯示在資料集檢視的原生資料類型欄中。若看不見欄,您需要開啟資料集檢視的欄選擇器並選取原生資料類型欄。
| Qlik Cloud 資料類型 | Databricks 資料類型 |
|---|---|
|
BOOLEAN |
BOOLEAN |
|
BYTES |
VARCHAR (以位元組為單位的長度) |
|
DATE |
DATE |
|
TIME |
STRING |
|
DATETIME |
TIMESTAMP 精確度始終為 6,即使輸入欄位使用低於 6 的精確度。 如果輸入欄位使用高於 6 的精確度,您可以保留完整精確度,請考慮將欄位轉換為其他支援的類型,例如 STRING。 |
|
INT1 |
TINYINT |
|
INT2 |
SMALLINT |
|
INT4 |
INT |
|
INT8 |
BIGINT |
|
NUMERIC |
DECIMAL (精確度, 小數位數) |
|
REAL4 |
FLOAT |
|
REAL8 |
DOUBLE |
|
UINT1 |
SMALLINT |
|
UINT2 |
INT |
|
UINT4 |
BIGINT |
|
UINT8 |
DECIMAL (20, 0) |
|
STRING |
VARCHAR (以位元組為單位的長度) 當欄位具有 JSON 子類型且 Databricks Runtime 版本為 15.4 LTS 或更新版本時,則為: VARIANT |
|
WSTRING |
VARCHAR (以位元組為單位的長度) 當欄位具有 JSON 子類型且 Databricks Runtime 版本為 15.4 LTS 或更新版本時,則為: VARIANT |
|
NCLOB |
STRING 當欄位具有 JSON 子類型且 Databricks Runtime 版本為 15.4 LTS 或更新版本時,則為: VARIANT |
|
CLOB |
STRING 當欄位具有 JSON 子類型且 Databricks Runtime 版本為 15.4 LTS 或更新版本時,則為: VARIANT |
|
BLOB |
STRING |
| JSON |
VARIANT 資訊備註VARIANT 資料類型在 Databricks 中作為公開預覽版受到支援。
|
以下資料類型將轉換為 STRING(255):
-
MAP
-
ARRAY
-
STRUCT
限制和考量事項
-
在 AWS 上使用 Databricks 且表格沒有主索引鍵時,在儲存應用程式中重新載入登陸中的表格將會失敗。要解決此問題,您可以:
-
在表格中定義主索引鍵。
-
在 Databricks 中將 spark.databricks.delta.alterTable.rename.enabledOnAWS 設定為 True。
-
建立基於 SQL 的轉換時,所有 VARCHAR 欄位都會作為 STRING(255) 傳回。
-