
# Apache Hive数据源
本数据集成服务支持开源Apache Hive产品，支持Hive主流版本，可满足不同用户在多种部署环境下的数据同步需求。
#### 使用前准备及限制
- **网络要求**
  Apache Hive数据源必须与CDM网络进行通讯，以确保数据传输的顺畅性。详情请参见[网络打通](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7765.html)。
  
- **访问端口放通：** 在配置Apache Hive数据源时，需要确保以下端口在安全组或自有网络已经放通，以供数据集成服务访问MRS使用。
  表1各服务端口说明 
  | **服务**    | **端口类型** | **端口号** | **用途**                                                     |
  |:---|:---|:---|:---|
  | Hive      | TCP      | 10000   | HiveServer的 JDBC/ODBC 接口，供数据集成服务提交 SQL、拉取结果。               |
  | Hive      | TCP      | 9083    | Hive Metastore 接口，供 HiveServer获取库、表、分区等元数据。                |
  | HDFS      | TCP      | 8020    | NameNode RPC，客户端建立文件系统上下文、获取块位置。                           |
  | HDFS      | TCP      | 9866    | DataNode 数据传输，真正读写表文件（ORC/Parquet 等）的流式端口。                 |
  | Zookeeper | TCP      | 2181    | 高可用 HiveServer/Metastore 及 HDFS NameNode HA 依赖的 ZK quorum。 |
     
  
 
#### 支持的数据类型
以下给您介绍**Hive** 支持的数据源类型。
| **类型分类** | **Hive数据类型** | **读取是否支持** |
|:---|:---|:---|
| 字符串类     | CHAR         | √          |
| 字符串类     | VARCHAR      | √          |
| 字符串类     | STRING       | √          |
| 整数类      | TINYINT      | √          |
| 整数类      | SMALLINT     | √          |
| 整数类      | INT          | √          |
| 整数类      | INTEGER      | √          |
| 整数类      | BIGINT       | √          |
| 浮点类      | FLOAT        | √          |
| 浮点类      | DOUBLE       | √          |
| 浮点类      | DECIMAL      | √          |
| 日期时间类    | TIMESTAMP    | √          |
| 日期时间类    | DATE         | √          |
| 布尔型      | BOOLEAN      | √          |
| 二进制      | BINARY       | √          |
| 复杂类型     | ARRAY        | √          |
| 复杂类型     | MAP          | √          |
| 复杂类型     | STRUCT       | x          |
| 复杂类型     | UNIONTYPE    | x          |
   
#### 支持的迁移场景
数据集成离线同步支持以下三种同步方式，以满足不同数据迁移场景的需求：
- **单表同步**
  适用于数据入湖和数据上云场景下，表或文件级别的数据同步。
  
- **分库分表同步**
  适用于数据入湖和数据上云场景下，多库多表同步场景。
  
- **整库迁移**
  适用于数据入湖和数据上云场景下，离线或自建数据库整体同步场景。
  
需要注意的是，分库分表与整库迁移能力会根据不同region的上线支持情况有所不同，具体支持情况以页面为准。以下是针对Apache Hive的支持迁移场景概览：
| 支持迁移场景 | 单表读取 | 单表写入 | 分库分表读取 | 分库分表写入 | 整库读取 | 整库写入           |
|:---|:---|:---|:---|:---|:---|:---|
| 是否支持   | √    | √    | x      | √      | x    | √(仅部分region支持) |
   
#### 核心能力速览
- **连接配置**
  
  | 配置项        | 支持情况 | 说明                                   |
  |:---|:---|:---|
  | kerberos认证 | √    | 通过Kerberos认证方式访问MRS集群。               |
  | 存算分离       | √    | 支持存算分离架构，读取OBS/HDFS多种不同Hive存储文件系统能力。 |
     
  
- **读取能力**
  
  | 配置项   | 支持情况      | 说明                                                                                         |
  |:---|:---|:---|
  | 读取方式  | JDBC/HDFS | 支持通过 JDBC 或直接读取 HDFS 文件。JDBC 适用于交互式查询，利用 SQL 语法灵活读取；直接读取 HDFS 适用于大规模数据批量读取，绕过 SQL 解析，效率更高。 |
  | 分片并发  | √         | 支持水平分片，多线程并行抽取，显著提升吞吐效率。当前仅支持在HDFS读取方式下通过文件进行并发读取。                                         |
  | 自定义字段 | x         | 可在任务级追加计算列、常量列或脱敏函数，满足个性化业务需求，暂不支持。                                                        |
  | 脏数据处理 | √         | 支持异常数据写入脏数据桶，避免因少量异常数据导致作业失败。                                                              |
  | 增量读取  | √         | 支持分区过滤或通过sql方式的增量读取。                                                                       |
     
  
  
- **写入能力**
  
  | 配置项    | 支持情况                         | 说明                                                                                                                  |
  |:---|:---|:---|
  | 写入方式   | Insert into/Insert overwrite | 支持 Insert into 和 Insert overwrite 两种写入方式。Insert into 是向目标表追加数据，适用于数据的增量写入；Insert overwrite 是覆盖目标表或分区的数据，适用于数据的全量更新。 |
  | 导入前后处理 | √                            | 支持Truncate方式对选用分区进行清空。                                                                                              |
  | 脏数据处理  | x                            | 支持异常数据写入脏数据桶，避免因少量异常数据导致作业失败，暂不支持。                                                                                  |
  | 并发写入   | √                            | 并发写入可以充分利用集群资源，提高数据写入的速度。                                                                                           |
     
  
 
#### 创建数据源
在DataArts Studio管理中心新建相应的数据源，详情请参见[创建DataArts Studio数据连接](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0009.html)。
#### 创建数据集成离线作业
在DataArts Studio数据开发中新建Apache Hive集成作业，详情请参见[新建离线处理集成作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1458.html)。
#### 最佳实践
[Hive Load/Truncate+Load/Load Overwrite写入模式最佳实践](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1536.html)
