使用 Azure Data Factory 從 Hive 複製和轉換資料

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

此文章概述如何使用 Azure Data Factory 或 Synapse Analytics 管線中的複製活動,從 Hive 複製資料。 本文是根據複製活動概觀一文,該文提供複製活動的一般概觀。

支援的功能

此 Hive 連接器支援下列功能:

支援的功能 IR
複製活動 (來源/-) ① ②
對應資料流程 (來源/-)
查閱活動 ① ②

① Azure 整合執行階段 ② 自我裝載整合執行階段

如需複製活動所支援作為來源/接收器的資料存放區清單,請參閱支援的資料存放區表格。

此服務提供的內建驅動程式可啟用連線,因此,您不需手動安裝任何驅動程式,即可使用此連接器。

必要條件

如果您的資料存放區位於內部部署網路、Azure 虛擬網路或 Amazon 虛擬私人雲端中,則必須設定自我裝載整合執行階段以與其連線。

如果您的資料存放區是受控雲端資料服務,則可使用 Azure Integration Runtime。 如果只能存取防火牆規則中核准的 IP,您可以將 Azure Integration Runtime IP 新增至允許清單。

您也可以使用 Azure Data Factory 中的受控虛擬網路整合執行階段功能來存取內部部署網路,而不需要安裝和設定自我裝載整合執行階段。

如需 Data Factory 支援的網路安全性機制和選項的詳細資訊,請參閱資料存取策略

開始使用

若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:

使用 UI 建立連結至 Hive 的服務

使用下列步驟,在 Azure 入口網站 UI 中建立連結至 Hive 的服務。

  1. 前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:

  2. 搜尋 Hive 並選取 Hive 連接器。

    Select the Hive connector.

  3. 設定服務詳細資料,測試連線,然後建立新的連結服務。

    Configure a linked service to Hive.

連接器設定詳細資料

下列各節提供屬性的相關詳細資料,這些屬性是用來定義 Hive 連接器專屬的 Data Factory 實體。

連結服務屬性

以下是針對 Hive 連結服務支援的屬性:

屬性 描述 必要
type 類型屬性必須設為:Hive Yes
host Hive 伺服器的 IP 位址和主機名稱,如果有多個主機請以「;」分隔 (僅限啟用 serviceDiscoveryMode 時)。 Yes
port Hive 伺服器用來接聽用戶端連線的 TCP 連接埠。 如果您連線到 Azure HDInsight,請將連接埠指定為 443。 Yes
serverType Hive 伺服器的類型。
允許的值為:HiveServer1HiveServer2HiveThriftServer
No
thriftTransportProtocol Thrift 層中使用的傳輸通訊協定。
允許的值為:BinarySASLHTTP
No
authenticationType 用來存取 Hive 伺服器的驗證方法。
允許的值為:AnonymousUsernameUsernameAndPasswordWindowsAzureHDInsightService。 目前不支援 Kerberos 驗證。
Yes
serviceDiscoveryMode true 表示使用 ZooKeeper 服務,false 表示不使用 ZooKeeper 服務。 No
zooKeeperNameSpace ZooKeeper 上的命名空間,Hive Server 2 節點會新增在 ZooKeeper 下方。 No
useNativeQuery 指定驅動程式是否使用原生 HiveQL 查詢,或將查詢轉換為 HiveQL 中的對等格式。 No
username 您用來存取 Hive 伺服器的使用者名稱。 No
password 對應到使用者的密碼。 將此欄位標記為 SecureString 以便安全儲存,或參考 Azure Key Vault 中儲存的祕密 No
httpPath 對應至 Hive 伺服器的部分 URL。 No
enableSsl 指定是否使用 TLS 加密與伺服器的連線。 預設值為 false。 No
trustedCertPath .pem 檔案的完整路徑,其中包含在透過 TLS 連線時,用來驗證伺服器的受信任 CA 憑證。 只有在自我裝載 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 複製資料,請將資料集的類型屬性設定為 HiveObject。 以下是支援的屬性:

屬性 描述 必要
type 資料集的類型屬性必須設定為 HiveObject Yes
schema 結構描述的名稱。 否 (如果已指定活動來源中的「查詢」)
table 資料表的名稱。 否 (如果已指定活動來源中的「查詢」)
tableName 包含結構描述部分的資料表名稱。 支援此屬性是基於回溯相容性。 對於新的工作負載,請使用 schematable 否 (如果已指定活動來源中的「查詢」)

範例

{
    "name": "HiveDataset",
    "properties": {
        "type": "HiveObject",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Hive linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

複製活動屬性

如需可用來定義活動的區段和屬性完整清單,請參閱管線一文。 本節提供 Hive 來源所支援的屬性清單。

將 HiveSource 作為來源

若要從 Hive 複製資料,請將複製活動中的來源類型設定為 HiveSource。 複製活動的 source 區段支援下列屬性:

屬性 描述 必要
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 存放區
格式 無論您是從資料表或查詢讀取 tablequery format
結構描述名稱 如果從資料表讀取,來源資料表的結構描述 是,如果格式為 table String schemaName
資料表名稱 如果從資料表讀取,資料表名稱 是,如果格式為 table String tableName
查詢 如果格式為 query,Hive 連結服務上的來源查詢 是,如果格式為 query String query
分段 Hive 資料表一律會暫存。 true 分段
儲存體容器 儲存體容器,用來在從 Hive 讀取或寫入 Hive 之前暫存資料。 Hive 叢集必須具有此容器的存取權。 String storageContainer
暫存資料庫 連結服務中指定的使用者帳戶可以存取的結構描述/資料庫。 用來在暫存期間建立外部資料表,並在之後卸除 truefalse stagingDatabaseName
預先 SQL 指令碼 讀取資料之前,在 Hive 資料表上執行的 SQL 程式碼 String preSQLs

來源範例

以下是 Hive 來源設定的範例:

Hive source example

這些設定會轉譯成下列資料流程指令碼:

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 驅動程式會在接收器中提供 "tableName.columnName"。 如果您不想在資料行名稱中看到資料表名稱,則有兩種方式可以修正此問題。 a. 檢查 Hive 伺服器端的 "hive.resultset.use.unique.column.names" 設定,並將其設定為 false。 b. 使用資料行對應來重新命名資料行名稱。

查閱活動屬性

若要了解屬性的詳細資料,請參閱查閱活動

如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區