使用 Azure Data Factory 從 Hive 複製和轉換資料
適用于: Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用于企業的單一分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版 !
本文概述如何使用 Azure Data Factory 或 Synapse Analytics 管線中的複製活動,從 Hive 複製資料。 它會以 複製活動概觀 一文為基礎,提供複製活動的一般概觀。
支援的功能
下列功能支援此 Hive 連接器:
支援的功能 | IR |
---|---|
複製活動 (source/-) | ① ② |
對應資料流程 (source/-) | ① |
查閱活動 | ① ② |
(1) Azure 整合執行時間 (2) 自我裝載整合執行時間
如需複製活動支援做為來源/接收的資料存放區清單,請參閱 支援的資料存放區 資料表。
此服務提供內建驅動程式來啟用連線能力,因此您不需要使用此連接器手動安裝任何驅動程式。
必要條件
如果您的資料存放區位於內部部署網路、Azure 虛擬網路或 Amazon Virtual Private Cloud 內,您必須設定 自我裝載整合執行時間 以連線到它。
如果您的資料存放區是受控雲端資料服務,您可以使用 Azure Integration Runtime。 如果存取僅限於防火牆規則中核准的 IP,您可以將 Azure Integration Runtime IP 新增 至允許清單。
您也可以使用 Azure Data Factory 中的受控虛擬網路整合執行時間 功能來存取內部部署網路,而不需安裝及設定自我裝載整合執行時間。
如需 Data Factory 所支援之網路安全性機制和選項的詳細資訊,請參閱 資料存取策略 。
開始使用
若要使用管線執行複製活動,您可以使用下列其中一個工具或 SDK:
- 複製資料工具
- Azure 入口網站
- The .NET SDK
- The Python SDK
- Azure PowerShell
- The REST API
- Azure Resource Manager 範本
使用 UI 建立 Hive 的連結服務
使用下列步驟,在 Azure 入口網站 UI 中建立 Hive 的連結服務。
流覽至 Azure Data Factory 或 Synapse 工作區中的 [管理] 索引標籤,然後選取 [連結服務],然後按一下 [新增]:
搜尋 Hive 並選取 Hive 連接器。
設定服務詳細資料、測試連線,並建立新的連結服務。
連線or 組態詳細資料
下列各節提供屬性的相關詳細資料,這些屬性是用來定義 Hive 連接器專屬的 Data Factory 實體。
連結的服務屬性
Hive 連結服務支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | type 屬性必須設定為: Hive | Yes |
host | 多部主機的 IP 位址或主機名稱,以 ';' 分隔(只有在啟用 serviceDiscoveryMode 時)。 | Yes |
port | Hive 伺服器用來接聽用戶端連線的 TCP 埠。 如果您連線到 Azure HDInsight,請將埠指定為 443。 | Yes |
serverType | Hive 伺服器的型別。 允許的值為: HiveServer1 、 HiveServer2 、 HiveThriftServer |
No |
thriftTransportProtocol | 在 Thrift 層中使用的傳輸通訊協定。 允許的值為: Binary 、 SASL 、 HTTP |
No |
authenticationType | 用來存取 Hive 伺服器的驗證方法。 允許的值為: Anonymous 、 Username、 UsernameAndPassword 、 WindowsAzureHDInsightService 。 目前不支援 Kerberos 驗證。 |
Yes |
serviceDiscoveryMode | true 表示使用 ZooKeeper 服務,false not。 | No |
zooKeeperNameSpace | 在 ZooKeeper 上新增 Hive Server 2 節點的命名空間。 | No |
useNativeQuery | 指定驅動程式是否使用原生 HiveQL 查詢,或將它們轉換成 HiveQL 中的對等形式。 | No |
username | 您用來存取 Hive Server 的使用者名稱。 | No |
password | 對應至使用者的密碼。 將此欄位標示為 SecureString 以安全地儲存,或 參考儲存在 Azure 金鑰保存庫 中的秘密。 | No |
HTTPPath | 對應至 Hive 伺服器的部分 URL。 | No |
enableSsl | 指定是否使用 TLS 加密伺服器連線。 預設值為 false。 | No |
trustedCertPath | .pem 檔案的完整路徑,其中包含信任的 CA 憑證,以在透過 TLS 連線時驗證服務器。 只有在自我裝載 IR 上使用 TLS 時,才能設定此屬性。 預設值是隨 IR 一起安裝的 cacerts.pem 檔案。 | No |
useSystemTrustStore | 指定是否要使用來自系統信任存放區或指定 PEM 檔案的 CA 憑證。 預設值為 false。 | No |
allowHostNameCNMismatch | 指定是否要在透過 TLS 連線時要求 CA 簽發的 TLS/SSL 憑證名稱,以符合伺服器的主機名稱。 預設值為 false。 | No |
allowSelfSignedServerCert | 指定是否允許來自伺服器的自我簽署憑證。 預設值為 false。 | No |
connectVia | 用於連線到資料存放區的 Integration Runtime。 請從 必要條件一 節深入瞭解。 如果未指定,就會使用預設的 Azure Integration Runtime。 | No |
storageReference | 對應資料流程中用於暫存資料之儲存體帳戶之連結服務的參考。 只有在對應資料流程中使用 Hive 連結服務時,才需要此專案 | No |
範例:
{
"name": "HiveLinkedService",
"properties": {
"type": "Hive",
"typeProperties": {
"host" : "<cluster>.azurehdinsight.net",
"port" : "<port>",
"authenticationType" : "WindowsAzureHDInsightService",
"username" : "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
}
}
}
資料集屬性
如需可用來定義資料集的完整區段和屬性清單,請參閱 資料集 一文。 本節提供 Hive 資料集所支援的屬性清單。
若要從 Hive 複製資料,請將資料集的 type 屬性設定為 HiveObject 。 支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 資料集的類型屬性必須設定為: HiveObject | Yes |
schema | 架構的名稱。 | 否(如果已指定活動來源中的「查詢」) |
table | 資料表的名稱。 | 否(如果已指定活動來源中的「查詢」) |
tableName | 資料表的名稱,包括架構元件。 這個屬性支援回溯相容性。 針對新的工作負載,請使用 schema 和 table 。 |
否(如果已指定活動來源中的「查詢」) |
範例
{
"name": "HiveDataset",
"properties": {
"type": "HiveObject",
"typeProperties": {},
"schema": [],
"linkedServiceName": {
"referenceName": "<Hive linked service name>",
"type": "LinkedServiceReference"
}
}
}
複製活動屬性
如需可用來定義活動的區段和屬性的完整清單,請參閱 管線 一文。 本節提供 Hive 來源所支援的屬性清單。
HiveSource 作為來源
若要從 Hive 複製資料,請將複製活動中的來源類型設定為 HiveSource 。 複製活動 來源 區段中支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動來源的 type 屬性必須設定為: HiveSource | Yes |
query | 使用自訂 SQL 查詢來讀取資料。 例如: "SELECT * FROM MyTable" 。 |
否(如果已指定資料集中的 「tableName」 ) |
範例:
"activities":[
{
"name": "CopyFromHive",
"type": "Copy",
"inputs": [
{
"referenceName": "<Hive input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "HiveSource",
"query": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
對應資料流程屬性
在對應資料流程中,Hive 連接器支援為 內嵌資料集 來源。 使用查詢或直接從 HDInsight 中的 Hive 資料表讀取。 Hive 資料會在儲存體帳戶中暫存為 parquet 檔案,然後再在資料流程中轉換。
來源屬性
下表列出 Hive 來源所支援的屬性。 您可以在 [ 來源選項 ] 索引標籤中編輯這些屬性。
名稱 | 描述 | 必要 | 允許的值 | 資料流程腳本屬性 |
---|---|---|---|---|
儲存 | 市集必須是 hive |
是 | hive |
存放區 |
格式 | 無論您是從資料表或查詢讀取 | 是 | table 或 query |
format |
結構描述名稱 | 如果從資料表讀取,來源資料表的架構 | 是,如果格式為 table |
String | schemaName |
資料表名稱 | 如果從資料表讀取,則為數據表名稱 | 是,如果格式為 table |
String | tableName |
查詢 | 如果格式為 query ,則 Hive 連結服務上的來源查詢 |
是,如果格式為 query |
String | query |
上演 | Hive 資料表一律會暫存。 | 是 | true |
上演 |
儲存體容器 | 儲存體容器,用來在讀取 Hive 或寫入 Hive 之前暫存資料。 Hive 叢集必須能夠存取此容器。 | 是 | String | storageContainer |
預備資料庫 | 在連結服務中指定的使用者帳戶具有存取權的架構/資料庫。 它用來在預備期間建立外部資料表,並在之後卸載 | 否 | true 或 false |
stagingDatabaseName |
SQL 前置腳本 | 讀取資料之前,在 Hive 資料表上執行的 SQL 程式碼 | 否 | String | preSQLs |
來源範例
以下是 Hive 來源設定的範例:
這些設定會轉譯成下列資料流程腳本:
source(
allowSchemaDrift: true,
validateSchema: false,
ignoreNoFilesFound: false,
format: 'table',
store: 'hive',
schemaName: 'default',
tableName: 'hivesampletable',
staged: true,
storageContainer: 'khive',
storageFolderPath: '',
stagingDatabaseName: 'default') ~> hivesource
已知的限制
- 讀取不支援複雜類型,例如陣列、對應、結構及等位。
- Hive 連接器僅支援 Azure HDInsight 4.0 版或更新版本的 Hive 資料表(Apache Hive 3.1.0)
- 根據預設,Hive 驅動程式會在 sink 中提供 「tableName.columnName」。 如果您不想在資料行名稱中看到資料表名稱,則有兩種方式可以修正此問題。 a. 檢查 Hive 伺服器端的 「hive.resultset.use.unique.column.names」 設定,並將其設定為 false。 b. 使用資料行對應來重新命名資料行名稱。
查閱活動屬性
若要瞭解屬性的詳細資料,請檢查 查閱活動 。
相關內容
如需複製活動支援做為來源和接收的資料存放區清單,請參閱 支援的資料存放區 。