
# MRS Hive数据源
本数据集成服务全面支持华为云大数据MRS Hive产品，支持Hive主流版本，可满足不同用户在多种部署环境下的数据同步需求。
#### 使用前准备及限制
- **网络要求**
  MRS Hive数据源必须与CDM网络进行通讯，以确保数据传输的顺畅性。详情请参见[网络打通](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7765.html)。
  
- **权限** **要求**
  - **Hive读写权限**
    - **读权限** ：如果需要从Hive读取数据，需要为数据集成服务的IAM用户或用户组授予Hive的只读权限，如**MRS ReadOnlyAccess** 系统策略，或者根据具体需求创建自定义策略，授予如**SELECT**等读取相关操作的权限。
    
    - **写权限** ：如果需要向Hive写入数据，除了上述OBS权限外，还需要为数据集成服务的IAM用户或用户组授予Hive的写入权限，如**MRS CommonOperations** 或**MRS FullAccess** 系统策略，或者创建自定义策略，授予如**INSERT INTO TABLE** 、**CREATE TABLE**等写入相关操作的权限。
     
  
  - **OBS权限（存算分离场景）：**当MRS Hive开启存算分离，数据集成服务将与OBS进行读写文件交付，需要拥有OBS文件的读写权限。
  
  - **访问端口放通：** 在配置MRS Hive数据源时，需要确保以下端口在安全组或自有网络已经放通，以供数据集成服务访问MRS使用。
    表1各服务端口说明 
    | **服务**      | **端口类型**   | **端口号** | **用途**                                |
    |:---|:---|:---|:---|
    | MRS Manager | TCP        | 28443   | 下载MRS集群配置。                            |
    | MRS Manager | TCP        | 20009   | CAS认证端口。                              |
    | MRS Manager | TCP        | 20029   | Manager与其他组件之间的通信和管理操作。               |
    | KDC         | TCP\&\&UDP | 21730   | Kerberos认证使用。                         |
    | KDC         | TCP\&\&UDP | 21731   | Kerberos认证使用。                         |
    | KDC         | TCP\&\&UDP | 21732   | Kerberos认证使用。                         |
    | HDFS        | TCP        | 8020    | HDFS NameNode服务端口。                    |
    | HDFS        | TCP        | 9866    | HDFS dataNode服务端口。                    |
    | Hive        | TCP        | 10000   | HiveServer服务端口，用于客户端与HiveServer之间的通信。 |
    | Hive        | TCP        | 9083    | Hive Metastore服务端口，用于存储和管理Hive的元数据信息。 |
    | Zookeeper   | TCP        | 2181    | Zookeeper服务端口，用于客户端与Zookeeper集群之间的通信。 |
       
    
   
 
#### 支持的数据类型
以MRS Hive为基准，本数据集成服务兼容以下字段类型及其常见变体，确保在读写操作中能够准确处理各类数据：
| 类别    | 字段类型      | MRS Hive读取 | MRS Hive写入 |
|:---|:---|:---|:---|
| 字符串类  | CHAR      | √          | √          |
| 字符串类  | VARCHAR   | √          | √          |
| 字符串类  | STRING    | √          | √          |
| 整数类   | TINYINT   | √          | √          |
| 整数类   | SMALLINT  | √          | √          |
| 整数类   | INT       | √          | √          |
| 整数类   | INTEGER   | √          | √          |
| 整数类   | BIGINT    | √          | √          |
| 浮点类   | FLOAT     | √          | √          |
| 浮点类   | DOUBLE    | √          | √          |
| 浮点类   | DECIMAL   | √          | √          |
| 日期时间类 | TIMESTAMP | √          | √          |
| 日期时间类 | DATE      | √          | √          |
| 布尔型   | BOOLEAN   | √          | √          |
| 二进制   | BINARY    | √          | √          |
| 复杂类型  | ARRAY     | √          | √          |
| 复杂类型  | MAP       | √          | √          |
| 复杂类型  | STRUCT    | x          | x          |
| 复杂类型  | UNIONTYPE | x          | x          |
   
#### 支持的迁移场景
数据集成离线同步支持以下三种同步方式，以满足不同数据迁移场景的需求：
- **单表同步**
  适用于数据入湖和数据上云场景下，表或文件级别的数据同步。
  
- **分库分表同步**
  适用于数据入湖和数据上云场景下，多库多表同步场景。
  
- **整库迁移**
  适用于数据入湖和数据上云场景下，离线或自建数据库整体同步场景。
  
需要注意的是，分库分表与整库迁移能力会根据不同region的上线支持情况有所不同，具体支持情况以页面为准。以下是针对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                            | 支持异常数据写入脏数据桶，避免因少量异常数据导致作业失败，暂不支持。                                                                            |
  | 并发写入   | √                            | 并发写入可以充分利用集群资源，提高数据写入的速度。                                                                                     |
  | 运行态建表  | √                            | 在数据写入过程中动态创建表。如果目标表不存在，Hive会根据写入的数据自动创建表结构，无需预先手动创建表。                                                         |
     
  
 
#### 创建数据源
在DataArts Studio管理中心新建相应的数据源，详情请参见[创建DataArts Studio数据连接](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0009.html)。
#### 创建数据集成离线作业
在DataArts Studio数据开发中新建MRS 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)
