共用方式為

使用 Azure 数据工厂从 Hive 复制和转换数据

适用于:Azure 数据工厂 Azure Synapse Analytics

本文概述如何使用 Azure 数据工厂或 Synapse Analytics 管道中的复制活动从 Hive 复制数据。 它是基于概述复制活动总体的复制活动概述一文。

Important

Hive 连接器版本 2.0 提供了增强的原生 Hive 支持。 如果在解决方案中使用 Hive 连接器版本 1.0,请在 2025 年 9 月 30 日之前升级 Hive 连接器。 有关版本 2.0 和版本 1.0 之间差异的详细信息,请参阅此部分

Supported capabilities

此 Hive 连接器支持以下功能:

Supported capabilities IR
复制活动(源/-) ① ②
映射数据流(源/-)
Lookup activity ① ②

① Azure 集成运行时 ② 自承载集成运行时

有关复制活动支持作为源/接收器的数据存储列表,请参阅支持的数据存储表。

该服务提供内置的驱动程序用于启用连接,因此使用此连接器无需手动安装任何驱动程序。

连接器支持此文章中的 Windows 版本。

Prerequisites

如果数据存储位于本地网络、Azure 虚拟网络或 Amazon Virtual Private Cloud 内部,则需要配置自承载集成运行时才能连接到该数据存储。

如果数据存储是托管的云数据服务,则可以使用 Azure Integration Runtime。 如果访问范围限制为防火墙规则中允许的 IP,你可以选择将 Azure Integration Runtime IP 添加到允许列表。

此外,还可以使用 Azure 数据工厂中的托管虚拟网络集成运行时功能访问本地网络,而无需安装和配置自承载集成运行时。

要详细了解网络安全机制和数据工厂支持的选项,请参阅数据访问策略

Note

版本 2.0 支持自承载集成运行时 5.54 或更高版本。

Getting started

若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:

使用 UI 创建一个到 Hive 的链接服务

使用以下步骤在 Azure 门户 UI 中创建一个到 Hive 的链接服务。

  1. 浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡并选择“链接服务”,然后单击“新建”:

  2. 搜索 Hive 并选择 Hive 连接器。

    选择 Hive 连接器。

  3. 配置服务详细信息、测试连接并创建新的链接服务。

    配置到 Hive 的链接服务。

连接器配置详细信息

对于特定于 Hive 连接器的数据工厂实体,以下部分提供有关用于定义这些实体的属性的详细信息。

链接服务属性

Hive 连接器现在支持版本 2.0。 请参阅本 部分 ,将 Hive 连接器版本从版本 1.0 升级。 关于属性详情,请参阅对应部分。

Version 2.0

应用版本 2.0 时,Hive 链接服务支持以下属性:

Property Description Required
类型 type 属性必须设置为:Hive Yes
版本 指定的版本。 该值为 2.0 Yes
主持人 Hive 服务器的 IP 地址或主机名。 Yes
移植 Hive 服务器用来侦听客户端连接的 TCP 端口。 如果连接到 Azure HDInsight,请指定端口 443。 Yes
serverType Hive 服务器的类型。
允许的值为: HiveServer2
No
thriftTransportProtocol Thrift 层中要使用的传输协议。
允许的值为: BinarySASLHTTP
No
authenticationType 用于访问 Hive 服务器的身份验证方法。
允许的值为: AnonymousUsernameAndPasswordWindowsAzureHDInsightService。 目前不支持 Kerberos 身份验证。
Yes
用户名 用于访问 Hive 服务器的用户名。 No
密码 用户所对应的密码。 将此字段标记为 SecureString 以安全地存储它,或引用 Azure Key Vault 中存储的机密 No
httpPath 对应于 Hive 服务器的部分 URL。 No
enableSsl 指定是否使用 TLS 加密到服务器的连接。 默认值为真。 No
enableServerCertificateValidation 指定连接时是否启用服务器 SSL 证书验证。 始终使用系统信任存储。 默认值为真。 No
storageReference 对映射数据流中用于暂存数据的存储帐户的链接服务的引用。 仅当在映射数据流中使用 Hive 链接服务时,才需要这样做。 No
connectVia 用于连接到数据存储的集成运行时。 在先决条件部分了解更多信息。 如果未指定,则使用默认 Azure Integration Runtime。 可以使用自承载集成运行时,其版本应为 5.54 或更高版本。 No

Example:

{
    "name": "HiveLinkedService",
    "properties": {
        "type": "Hive",
        "version": "2.0",
        "typeProperties": {
            "host" : "<host>",
            "port" : "<port>",
            "authenticationType" : "WindowsAzureHDInsightService",
            "username" : "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "serverType": "HiveServer2",
            "thriftTransportProtocol": "HTTP",
            "enableSsl": true,
            "enableServerCertificateValidation": true
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Version 1.0

应用版本 1.0 时,Hive 链接服务支持以下属性:

Property Description Required
类型 type 属性必须设置为:Hive Yes
主持人 Hive 服务器的 IP 地址或主机名;对于多台主机,将以“;”分隔(仅限启用了 serviceDiscoveryMode 时)。 Yes
移植 Hive 服务器用来侦听客户端连接的 TCP 端口。 如果连接到 Azure HDInsight,请指定端口 443。 Yes
serverType Hive 服务器的类型。
允许值包括:HiveServer1、HiveServer2、HiveThriftServer
No
thriftTransportProtocol Thrift 层中要使用的传输协议。
允许值包括:二进制、SASL、HTTP
No
authenticationType 用于访问 Hive 服务器的身份验证方法。
允许值包括:Anonymous、Username、UsernameAndPassword、WindowsAzureHDInsightService 。 目前不支持 Kerberos 身份验证。
Yes
serviceDiscoveryMode true 指示使用 ZooKeeper 服务,false 指示不使用。 No
zooKeeperNameSpace ZooKeeper 上要将 Hive Server 2 节点添加到其下的命名空间。 No
useNativeQuery 指定驱动程序是使用本机 HiveQL 查询,还是将其转换为 HiveQL 中的等效形式。 No
用户名 用于访问 Hive 服务器的用户名。 No
密码 用户所对应的密码。 将此字段标记为 SecureString 以安全地存储它,或引用 Azure Key Vault 中存储的机密 No
httpPath 对应于 Hive 服务器的部分 URL。 No
enableSsl 指定是否使用 TLS 加密到服务器的连接。 默认值为 false。 No
trustedCertPath 包含受信任 CA 证书(通过 TLS 进行连接时用来验证服务器)的 .pem 文件的完整路径。 只有在自承载 IR 上使用 TLS 时才能设置此属性。 默认值是随 IR 一起安装的 cacerts.pem 文件。 No
useSystemTrustStore 指定是使用系统信任存储中的 CA 证书还是使用指定 PEM 文件中的 CA 证书。 默认值为 false。 No
allowHostNameCNMismatch 指定通过 TLS 进行连接时是否要求 CA 颁发的 TLS/SSL 证书名称与服务器的主机名相匹配。 默认值为 false。 No
allowSelfSignedServerCert 指定是否允许来自服务器的自签名证书。 默认值为 false。 No
connectVia 用于连接到数据存储的集成运行时。 在先决条件部分了解更多信息。 如果未指定,则使用默认 Azure Integration Runtime。 No
storageReference 对映射数据流中用于暂存数据的存储帐户的链接服务的引用。 仅当在映射数据流中使用 Hive 链接服务时,才需要此项 No

Example:

{
    "name": "HiveLinkedService",
    "properties": {
        "type": "Hive",
        "typeProperties": {
            "host" : "<cluster>.azurehdinsight.cn",
            "port" : "<port>",
            "authenticationType" : "WindowsAzureHDInsightService",
            "username" : "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        }
    }
}

Dataset properties

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。 本部分提供了 Hive 数据集支持的属性列表。

要从 Hive 复制数据,请将数据集的 type 属性设置为 HiveObject。 支持以下属性:

Property Description Required
类型 数据集的 type 属性必须设置为:HiveObject Yes
架构 架构的名称。 否(如果指定了活动源中的“query”)
表的名称。 否(如果指定了活动源中的“query”)
tableName 包含架构部分的表的名称。 支持此属性是为了向后兼容。 对于新的工作负荷,请使用 schematable 否(如果指定了活动源中的“query”)

Example

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

复制活动属性

有关可用于定义活动的各部分和属性的完整列表,请参阅管道一文。 本部分提供了 Hive 源支持的属性列表。

HiveSource 作为源

要从 Hive 复制数据,请将复制活动中的源类型设置为 HiveSource。 复制活动source部分支持以下属性:

Property Description Required
类型 复制活动 source 的 type 属性必须设置为:HiveSource Yes
查询 使用自定义 SQL 查询读取数据。 例如:"SELECT * FROM MyTable" 否(如果指定了数据集中的“tableName”)

Example:

"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 文件暂存在存储帐户中。

Source properties

下表列出了 hive 源支持的属性。 你可以在“源选项”选项卡中编辑这些属性。

Name Description Required Allowed values 数据流脚本属性
Microsoft Store 存储必须是 hive yes hive 存储
Format 是从表中还是从查询中读取 yes tablequery format
Schema name 如果从表中读取,则为源表的架构 如果格式为 table,则此项是必需的 String schemaName
Table name 如果从表中读取,则为表名 如果格式为 table,则此项是必需的 String tableName
Query 如果格式为 query,则为 Hive 链接服务上的源查询 如果格式为 query,则此项是必需的 String 查询
Staged 将始终暂存 Hive 表。 yes true staged
Storage Container 从 Hive 中读取或写入到 Hive 之前用于暂存数据的存储容器。 Hive 群集必须有权访问此容器。 yes String storageContainer
Staging database 在链接服务中指定的用户帐户有权访问的架构/数据库。 它用于在暂存过程中创建外部表,在之后将被删除 no truefalse stagingDatabaseName
预处理 SQL 脚本 在读取数据之前要在 Hive 表上运行的 SQL 代码 no String preSQLs

Source example

下面是 Hive 源配置的示例:

Hive 源示例

这些设置将转换为以下数据流脚本:

source(
    allowSchemaDrift: true,
    validateSchema: false,
    ignoreNoFilesFound: false,
    format: 'table',
    store: 'hive',
    schemaName: 'default',
    tableName: 'hivesampletable',
    staged: true,
    storageContainer: 'khive',
    storageFolderPath: '',
    stagingDatabaseName: 'default') ~> hivesource

Known limitations

  • 不支持将复杂类型(例如数组、映射、结构和联合)用于读取。
  • Hive 连接器仅支持 4.0 或更高版本的 Azure HDInsight 中的 Hive 表 (Apache Hive 3.1.0)
  • 默认情况下,Hive 驱动程序在接收器中提供“tableName.columnName”。 如果不希望在列名中看到表名,则可以通过两种方法来解决此问题。 a. 检查 Hive 服务器端上的设置“hive.resultset.use.unique.column.names”并将其设置为 false。 b. 使用列映射重命名列名。

Hive 的数据类型映射

将数据从 Hive 复制和复制到 Hive 时,服务中会使用以下临时数据类型映射。 若要了解复制活动如何将源架构和数据类型映射到接收器,请参阅架构和数据类型映射

Hive 数据类型 临时服务数据类型(适用于版本 2.0) 临时服务数据类型(适用于版本 1.0)
TINYINT Sbyte Int16
SMALLINT Int16 Int16
INT Int32 Int32
BIGINT Int32 Int64
BOOLEAN 布尔 布尔
FLOAT Single Single
DOUBLE Double Double
DECIMAL Decimal Decimal
STRING String String
VARCHAR String String
CHAR String String
TIMESTAMP DateTimeOffset DateTime
DATE DateTime DateTime
BINARY Byte[] Byte[]
ARRAY String String
MAP String String
STRUCT String String

查找活动属性

若要了解有关属性的详细信息,请查看 Lookup 活动

Hive 连接器生命周期和升级

下表显示了不同版本的 Hive 连接器的发布阶段和更改日志:

Version Release stage Change log
Version 1.0 宣布终止支持 /
Version 2.0 GA版本现已可用 • 自承载集成运行时版本应为 5.54 或更高版本。

• 默认值 enableSSL 为 true。 支持 enableServerCertificateValidation
不支持 trustedCertPathuseSystemTrustStoreallowHostNameCNMismatchallowSelfSignedServerCert

• TINYINT 读取为 SByte 数据类型。

• TIMESTAMP 被读取为 DateTimeOffset 数据类型。

• 不支持使用“;”分隔多个主机(仅当启用了 serviceDiscoveryMode 时)。

ServerType 不支持 HiveServer1 和 HiveThriftServer。

• 不支持用户名身份验证类型。 SASL 传输协议仅支持 UsernameAndPassword 身份验证类型。 二进制传输协议仅支持匿名身份验证类型。

serviceDiscoveryModezooKeeperNameSpaceuseNativeQuery 不受支持。

将 Hive 连接器从版本 1.0 升级到版本 2.0

  1. “编辑链接服务 ”页中,选择版本 2.0,并通过引用 链接服务属性版本 2.0 配置链接服务

  2. Hive 链接服务版本 2.0 的数据类型映射不同于版本 1.0 的数据类型映射。 若要了解最新的数据类型映射,请参阅 Hive 的数据类型映射

  3. 应用版本 5.54 或更高版本的自承载集成运行时。

有关复制活动支持作为源和接收器的数据存储的列表,请参阅支持的数据存储