
# 配置StarRocks对接Hive数据源
通过连接Hive Metastore，或者兼容Hive Metastore的元数据服务，StarRocks可以自动获取Hive库表信息，并进行表数据查询，从而避免了传统外部数据目录多需要手动映射以及数据迁移的复杂工程。
#### 前提条件
- 已[创建StarRocks集群](https://support.huaweicloud.com/usermanual-cloudtable/cloudtable_01_0489.html)。
- 已[安装MySQL客户端](https://support.huaweicloud.com/usermanual-cloudtable/cloudtable_01_0494.html#cloudtable_01_0494__section531737153320)。
 
- 为了确保网络连通，MRS集群必须与StarRocks集群的VPC、子网保持一致，且将StarRocks集群的所有节点IP加入到MRS集群的安全组中。
#### 使用限制
- 仅支持对接一个MRS集群。
- StarRocks查询Hive数据时，支持Parquet、ORC和Textfile三种文件格式，其中：
  - Parquet文件支持SNAPPY、LZ4、ZSTD、GZIP和NO_COMPRESSION压缩格式。自v3.1.5起，Parquet文件还支持LZO压缩格式。
  
  - ORC文件支持ZLIB、SNAPPY、LZO、LZ4、ZSTD和NO_COMPRESSION压缩格式。
  
  - Textfile文件从v3.1.5起支持LZO压缩格式。
   
- StarRocks查询Hive数据时，不支持INTERVAL、BINARY和UNION 三种数据类型。此外，对于Textfile格式的Hive表，StarRocks不支持MAP、STRUCT数据类型。
- StarRocks写入数据到Hive时，支持Parquet（3.2版本及以上）、以及ORC或TextFile（3.3版本及以上）文件格式，其中：
  - Parquet和ORC文件支持NO_COMPRESSION、SNAPPY、LZ4、ZSTD和GZIP压缩格式。
  
  - TextFile文件支持NO_COMPRESSION压缩格式。
   
 
#### 步骤一：创建Hive连接
1. 登录[表格存储服务控制台](https://console.huaweicloud.com/cloudtable)。
2. 用户在集群管理界面，选择目标集群进入集群详情页面。
3. 单击"连接管理 \> 新建连接"，弹出新建连接页面，创建MRS Hive连接。
4. 新建连接类型： 
   - 认证类型选择SIMPLE，OBS按钮关闭状态。
   
   - 认证类型选择KERBEROS，OBS按钮关闭状态。
   
   - 认证类型选择SIMPLE，OBS按钮开启状态。
   
   - 认证类型选择KERBEROS，OBS按钮开启状态。
   
   
   表1参数说明 
   | 参数         | 描述                                                                                                                                                    |
   |:---|:---|
   | 名称         | 根据连接的数据源类型，用户可以自定义连接名。 说明： 必须以字母开头，由字母、数字、中划线组成，不能包含其他的特殊字符，并且长度为4～64个字符。 |
   | 连接器        | StarRocks支持的外部数据目录组件，目前支持可选：Hive。                                                                                                                     |
   | Hadoop类型   | StarRocks支持hadoop组件，目前支持的可选：MRS。                                                                                                                      |
   | 集群名称       | 被访问的MRS集群名称。 StarRocks只能对接一个KERBEROS集群中的一个用户。                                                                    |
   | Manager IP | MRS Manager的浮动IP地址，选择连接的集群后，ip地址会自动填充。                                                                                                                |
   | 认证类型       | MRS集群鉴权类型，安全集群可选"KERBEROS"，非安全集群可选"SIMPLE"。选择连接的集群后，安全类型会自动填充，目前只支持非安全集群。 KERBEROS类型连接只能创建一个。                    |
   | 连接器版本      | MRS集群的数据源组件的版本，HIVE支持3版本，可选：3.X。                                                                                                                      |
   | 用户名        | MRS集群的用户名，且此用户必须为高权限可以访问Hive、HDFS的底层数据。如果您想创建新用户，请参见[创建MRS集群用户](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0345.html)。                     |
   | 密码         | MRS集群mrs_user_name对应的密码。                                                                                                                              |
   | OBS支持      | 打开按钮，当前创建的Catalog连接的数据表在OBS上。关闭按钮当前创建的Catalog连接的数据表在HDFS。                                                                                             |
      
   
   
5. 配置好参数后，单击测试。如果测试失败请检查用户名和密码是否正确。
6. 测试完成后，单击确定按钮，连接设置页面会出现一条新的连接记录。
 
#### 步骤二：使用SQL命令创建Catalog
1. 使用SSH登录工具，通过弹性IP登录到Linux弹性云服务器。 
   具体登录操作步骤请参见弹性云服务器《用户指南》中的" [SSH密码方式登录](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0017955633.html)"。
   
   
2. 访问StarRocks集群，参见[使用MySQL客户端连接StarRocks普通集群](https://support.huaweicloud.com/usermanual-cloudtable/cloudtable_01_0494.html)。
   
   ```
   ./mysql -uadmin -ppassword -h集群内网地址 -P9030
   ```
   
   
3. 创建Hive Catalog。 
   - 创建认证类型为SIMPLE的Catalog，访问存储在HDFS中的Hive数据。
     ```
     CREATE EXTERNAL CATALOG hive_catalog
     PROPERTIES
     (
     "type" = "hive",
     "hive.metastore.type" = "hive",
     "hive.metastore.uris" = "***"
     );
     ```
     
   
   - 创建认证类型为KERBEROS的Catalog，访问存储在HDFS中的Hive数据。
     ```
     CREATE EXTERNAL CATALOG hive_catalog1
     PROPERTIES
     (
     "type" = "hive",
     "hive.metastore.type" = "hive",
     "hive.metastore.uris" = "thrift://ip:port,thrift://ip:port",
     "hive.metastore.sasl.enabled" = "true"
     );
     ```
     
   
   - 创建认证类型为SIMPLE的Catalog，访问存储在OBS中的Hive数据。
     ```
     CREATE EXTERNAL CATALOG hive_catalog2
     PROPERTIES
     (
     "type" = "hive",
     "hive.metastore.type" = "hive",
     "hive.metastore.uris" = "***",
     "fs.obs.access.key" = "***",
     "fs.obs.secret.key" = "***",
     "fs.obs.endpoint" = "***",
     "fs.obs.region" = "***"
     );
     ```
     
   
   - 创建认证类型为KERBEROS的Catalog，访问存储在OBS中的Hive数据。
     ```
     CREATE EXTERNAL CATALOG hive_catalog3
     PROPERTIES
     (
     "type" = "hive",
     "hive.metastore.type" = "hive",
     "hive.metastore.uris" = "thrift://ip:port,thrift://ip:port",
     "hive.metastore.sasl.enabled" = "true",
     "fs.obs.access.key" = "***",
             "fs.obs.secret.key" = "***",
             "fs.obs.endpoint" = "***",
             "fs.obs.region" = "***"
     );
     ```
     
   
   - 相关参数描述以及参数值获取方法。
     表2参数说明 
     | 参数                          | 说明                                                                                                                                                                                                                                                                                                                                   |
     |:---|:---|
     | type                        | 对接外部数据类型。                                                                                                                                                                                                                                                                                                                            |
     | hive.metastore.type         | 可在hive-site.xml配置文件查看。                                                                                                                                                                                                                                                                                                               |
     | hive.metastore.uris         | hive元数据uri，可在hive-site.xml配置文件查看。                                                                                                                                                                                                                                                                                                    |
     | hive.metastore.sasl.enabled | 可在hive-site.xml配置文件查看。                                                                                                                                                                                                                                                                                                               |
     | fs.obs.access_key           | - access key，获取方式请参见的[获取访问密钥（AK/SK）](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)章节。  - obs.access_key可以访问到底层数据文件。   |
     | fs.obs.secret_key           | secret key，获取方式请参见的[获取访问密钥（AK/SK）](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)章节。                                                                                                                                                                                                                                 |
     | fs.obs.endpoint             | obs地址，获取方式请参见的[获取终端节点](https://support.huaweicloud.com/obs_faq/obs_faq_0124.html)章节。                                                                                                                                                                                                                                                 |
     | fs.obs.region               | obs region，在obs页面查看。                                                                                                                                                                                                                                                                                                                 |
        
     1. 以root用户登录MRS客户端所在节点（Master1节点）。
     
     2. 进入client目录下，显示出MRS的全部组件，Hive组件中包含了hive-site.xml配置。
        ```
        cd /opt/Bigdata/client/
        ```
        
     
     3. 进入组件中的配置文件查看参数。查看Hive组件中的hive-site.xml配置文件，查找相关参数。
        ```
        cat /opt/Bigdata/client/Hive/config/hive-site.xml
        ```
        
      
   
   
   
   
 
#### 步骤三：查询数据映射表
1. 查看Catalogs。以查看Hive hdfs数据表为例。 
   ```
   show catalogs;
   ```
   ![](https://support.huaweicloud.com/usermanual-cloudtable/zh-cn_image_0000002376542357.png "点击放大")
   
   
2. 执行以下命令查询Catalog下面的数据库。 
   ```
   show databases from catalog_name;
   ```
   ![](https://support.huaweicloud.com/usermanual-cloudtable/zh-cn_image_0000002376662257.png)
   
   
3. 切换到指定的Catalog。 
   ```
   set catalog catalog_name;
   ```
   
   
4. 使用数据库。 
   ```
   use db_name;
   ```
   
   
5. 查看数据库中的表。 
   ```
   show tables;
   ```
   
   
6. 查询目标表的数据。 
   ```
   select * from table_name limit 10;
   ```
   ![](https://support.huaweicloud.com/usermanual-cloudtable/zh-cn_image_0000002342704244.png)
   
   
7. 目标数据表插入数据。 
   ```
   insert into table_name values(8,"8");
   ```
   
   
8. 查询表中新插入的数据。 
   ```
   select * from table_name limit 10;
   ```
   ![](https://support.huaweicloud.com/usermanual-cloudtable/zh-cn_image_0000002342544444.png)
   
   
 
