# Databricks

您可以使用 Databricks 作為資料管道或複寫任務中的目標資料平台。在資料管道中，可以在目標平台執行各種 ELT 操作，包括儲存資料、轉換資料、建立資料超市和註冊資料。另一方面，複寫任務涉及將資料直接從來源系統複寫至具有基本轉換功能但不支援 ELT 操作的目標系統。

設定 Databricks 作為目標涉及：

* [履行先決條件](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/databricks-target.htm#Prerequi2)
* 設定連線至雲端暫存區域。若您[註冊現有資料](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Onboarding/Registering-data.htm)，則不需要這麼做。
* 設定連線至 Databricks

資訊備註僅支援 SQL 倉庫叢集

## 設定雲端暫存區域

使用 Databricks 目標連接器時，您也需要定義雲端暫存區域，資料和變更在套用和儲存之前會在該區暫存。支援以下儲存平台：

* [Amazon S3](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/aws-s3-target.htm)

* [Azure Data Lake Storage](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/adls-target.htm)

* [Google Cloud Storage](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/google-storage-target.htm)

資訊備註若您[註冊現有資料](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Onboarding/Registering-data.htm)，您不需要設定雲端暫存區域。

## 設定連線至 Databricks

提供暫存設定後，進行下列事項：

1. 在連線中，按一下建立連線。

2. 選取 Databricks 目標連接器，然後提供下列設定：

### 資料目標

#### 資料閘道

資訊備註此欄位無法用於 Qlik Talend Cloud 啟動器 訂閱，因為此訂閱層級不支援 資料移動閘道。

只有在無法從 Qlik Cloud 存取目標資料庫且只能使用私人連結存取時 (例如若將在虛擬私人雲端中)，才需要 資料移動閘道。在此情況下，選取您要用來存取目標資料庫的 資料移動閘道。

根據您的使用情況，這會是為了從資料來源移動資料而部署的相同或不同 資料移動閘道。

如需關於 資料移動閘道 使用案例的資訊，請參閱 [何時需要 資料移動閘道？](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm#top) 和 [常見使用案例](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm#Common)。

若目標資料庫可從 Qlik Cloud 直接存取，請選取無。

資訊備註透過 資料移動閘道 存取目標資料庫時，您也需要在 資料移動閘道 機器上安裝適當的驅動程式。如需詳細資訊，請參閱以下的 [驅動程式的設定](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/databricks-target.htm#Driver)。

### 連線屬性

* 主機：Databricks 工作區的主機名稱。
* 連接埠：用來存取工作區的連接埠。
* HTTP 路徑：前往使用之叢集的路徑。

### 驗證

* 驗證方法 - 選取下列方法之一：

  * OAuth：提供以下資訊：

    資訊備註

    OAuth 驗證先決條件：

    * 確保您的 Databricks 資料庫設定為使用 OAuth。如需指示，請參閱廠商的線上說明。
    * 如果使用 資料移動閘道 存取資料庫，則需要 資料移動閘道 2024.11.30 或更高版本。

    * 用戶端 ID： 您的應用程式的用戶端 ID。

    * 用戶端密碼： 您的應用程式的用戶端密碼。請注意，如果您編輯連線，將會移除用戶端密碼作為保護，您將需要重新輸入密碼。

  * 個人存取 Token： 在 Token 欄位中，輸入您用於存取工作區的個人 Token。

### 目錄屬性

按一下載入目錄以載入可用目錄，然後選取目錄。若未透過任何目錄設定環境，選取 hive\_metastore，這是預設目錄。

資訊備註

您需要定義 Databricks 中的外部位置，以允許資料任務存取外部 (未管理) 表格。如需準則，請參閱：

https://docs.databricks.com/data-governance/unity-catalog/manage-external-locations-and-credentials.html#manage-permissions-for-an-external-location

### 內部屬性

內部屬性用於特殊使用情況，因此不會在對話方塊中顯示。您只能在 Qlik 支援指示下使用。

根據需要使用欄位右側的 the Create new icon 和 the Cancel icon 按鈕以新增或移除屬性。

### 名稱

連線的顯示名稱。

## 必要條件

### 一般權限

* 在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.&lt;storage-account-name&gt;.dfs.core.windows.net &lt;storage-account-access-key&gt;

  如需更多資訊詳情，請參考 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：

1. 停止 Data Movement gateway 服務：

   sudo systemctl stop repagent

2. 可自選，確認服務已停止：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. 在 Data Movement 閘道機器上，將工作目錄變更為：

   opt/qlik/gateway/movement/drivers/bin

4. 執行下列命令：

   語法：

   ./install databricks

   若無法下載 driver (由於存取限制或技術問題)，將會顯示訊息，指示您到哪裡下載 driver 以及在 Data Movement 閘道機器上的何處複製。完成後，再次執行 install databricks 命令。

   否則，就會顯示 driver 的 EULA。

5. 執行下列其中一個動作：

   * 重複按下 [Enter] 以緩慢瀏覽 EULA。
   * 重複按下空格鍵以快速瀏覽 EULA。
   * 按下 q 以結束授權文字並呈現 EULA 接受選項。

6. 執行下列其中一個動作：

   * 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。

   * 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。

   * 輸入「v」並按下 [Enter] 以再次檢視 EULA。

   將會安裝 driver。

7. 等待安裝完成 (以「完成！」指示)，然後開始 Data Movement gateway 服務：

   sudo systemctl start repagent

8. 可自行選擇確認服務已開始：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: active (running) since &lt;timestamp&gt; ago

更新 driver

若您想要在安裝提供的 driver 之前解除安裝先前的 driver 版本，請執行更新命令。

若要下載並更新 driver：

1. 停止 Data Movement gateway 服務：

   sudo systemctl stop repagent

2. 可自選，確認服務已停止：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. 在 Data Movement 閘道機器上，將工作目錄變更為：

   opt/qlik/gateway/movement/drivers/bin

4. 執行下列命令：

   語法：

   ./update databricks

   若無法下載 driver (由於存取限制或技術問題)，將會顯示訊息，指示您到哪裡下載 driver 以及在 Data Movement 閘道機器上的何處複製。完成後，再次執行 update databricks 命令。

   否則，就會顯示 driver 的 EULA。

5. 執行下列其中一個動作：

   * 重複按下 [Enter] 以緩慢瀏覽 EULA。
   * 重複按下空格鍵以快速瀏覽 EULA。
   * 按下 q 以結束授權文字並呈現 EULA 接受選項。

6. 執行下列其中一個動作：

   * 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
   * 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
   * 輸入「v」並按下 [Enter] 以從頭檢閱 EULA。

   將會解除安裝舊版 driver，並安裝新版 driver。

7. 等待安裝完成 (以「完成！」指示)，然後開始 Data Movement gateway 服務：

   sudo systemctl start repagent

8. 可自行選擇確認服務已開始：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: active (running) since &lt;timestamp&gt; ago

解除安裝 driver

若您想要解除安裝 driver，請執行解除安裝命令。

若要解除安裝 driver：

1. 停止設定為使用此連接器的所有任務。

2. 在 Data Movement 閘道機器上，將工作目錄變更為：

   opt/qlik/gateway/movement/drivers/bin

3. 執行下列命令：

   語法：

   ./uninstall databricks

   將會解除安裝 driver。

#### 手動安裝驅動程式

只有在自動驅動程式安裝無法成功完成時，才能嘗試手動安裝 driver。

安裝 ODBC 驅動程式

安裝 資料移動閘道 後，下載 SimbaSparkODBC-&lt;version&gt;-LinuxRPM-64bit.zip 檔案。您可以在 /opt/qlik/gateway/movement/drivers/manifests/databricks.yaml. 的 binary-artifacts 之下找到支援版本的直接下載連結。下載完成後，將檔案複製到 資料移動閘道 機器。

1. 停止 Data Movement gateway 服務：

   sudo systemctl stop repagent

2. 可自選，確認服務已停止：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. 將驅動程式安裝在 Data Movement gateway 機器。

4. 一旦安裝，請確定以下區段出現在 /etc/odbcinst.ini 檔案中：

   ```
   [Databricks ODBC Driver]
   Driver=/opt/databricks/databricksodbc/lib/64/libdatabricksodbc64.so
   ```

5. 開始 Data Movement gateway 服務：

   sudo systemctl start repagent

6. 可自選，確認服務已開始：

   sudo systemctl status repagent

   狀態應如下所示：

   Active: active (running) since &lt;timestamp&gt; ago

安裝 JDBC 驅動程式

1. 下載 databricks-jdbc-&lt;version&gt;.jar 檔案。您可以在 /opt/qlik/gateway/movement/drivers/manifests/databricks.yaml. 的 binary-artifacts 之下找到支援版本的直接下載連結。下載完成後，將 JAR 檔案複製到 資料移動閘道 機器的下列資料夾：

   /opt/qlik/gateway/movement/qcs\_agents/qdi-db-commands/lib

2. 執行 資料移動閘道 中描述的命令，以重新啟動 [資料移動閘道 服務命令](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/dm-gateway-managing.htm#Restarti) 服務並確認已啟動

### 連接埠

需開啟防火牆連接埠 443 才能進行輸入通訊。

## 資料類型

下表顯示使用 Qlik Cloud 時支援的 Databricks 資料類型和來自 Qlik Cloud 資料類型的預設對應。

會保留原生資料類型資訊，並顯示在資料集檢視的原生資料類型欄中。若看不見欄，您需要開啟資料集檢視的欄選擇器並選取原生資料類型欄。

支援的資料類型

| Qlik Cloud資料類型 | Databricks 資料類型 |
| --- | --- |
| 布林值 | 布林值 |
| 位元組 | VARCHAR (以位元組為單位的長度) |
| 日期 | 日期 |
| 時間 | 字串 |
| 日期時間 | 時間戳記<br><br>精確度始終為 6，即使輸入欄使用的精確度低於 6，仍是如此。<br><br>如果輸入欄使用高於 6 的精確度，您可以保留完整的精確度，考慮將該欄轉換為另一種支援的類型，例如 STRING。 |
| INT1 | TINYINT |
| INT2 | SMALLINT |
| INT4 | INT |
| INT8 | BIGINT |
| 數字 | 小數 (精確度，縮放) |
| REAL4 | 浮動 |
| REAL8 | 雙重 |
| UINT1 | SMALLINT |
| UINT2 | INT |
| UINT4 | BIGINT |
| UINT8 | 小數 (20, 0) |
| 字串 | VARCHAR (以位元組為單位的長度)<br><br>當欄位具有 JSON 子類型且 Databricks Runtime 版本為 15.4 LTS 或更高版本時，則：<br><br>VARIANT |
| WSTRING | VARCHAR (以位元組為單位的長度)<br><br>當欄位具有 JSON 子類型且 Databricks Runtime 版本為 15.4 LTS 或更高版本時，則：<br><br>VARIANT |
| NCLOB | 字串<br><br>當欄位具有 JSON 子類型且 Databricks Runtime 版本為 15.4 LTS 或更高版本時，則：<br><br>VARIANT |
| CLOB | 字串<br><br>當欄位具有 JSON 子類型且 Databricks Runtime 版本為 15.4 LTS 或更高版本時，則：<br><br>VARIANT |
| BLOB | 字串 |
| JSON | 變體<br><br>資訊備註VARIANT 資料類型在 Databricks 中作為公用預覽受到支援。 |

下列資料類型會轉換為 STRING(255)：

* 地圖

* 陣列

* STRUCT

## 限制和考慮事項

* 在 AWS 上以無主要金鑰的表格使用 Databricks 時，將表格重新載入至登陸會導致 Storage 應用程式故障。若要解決此問題，您可以選擇

  * 在表格中定義主要金鑰。

  * 在 Databricks 中將 spark.databricks.delta.alterTable.rename.enabledOnAWS 設定為 True。

  * 建立基於 SQL 的轉換時，會傳回所有 VARCHAR 作為 STRING(255)。

* 如果主索引鍵是基於可為 Null 的資料行，則不會在 Databricks 中建立。