# 配置HetuEngine对接Paimon
#### 操作场景
本章节指导用户使用HetuEngine客户端配置对接Paimon数据所在集群。
#### 约束与限制
- Paimon表必须创建在单独的database下（即database的Location必须为"warehouse路径 + *database名称* + *.db后缀* "，即"*warehouse路径* /*database名称*.db"），不能使用default database，否则HetuEngine查询会报错提示表不存在。
- "paimon.properties"配置文件中"paimon.warehouse"参数值必须是Paimon表实际存储所在的warehouse路径，否则HetuEngine查询会报错提示表不存在。
 
#### 配置对接安全模式集群的Paimon数据源
**准备"core-site.xml"和"hdfs-site.xml"配置文件**。
1. 登录Paimon数据源所在集群的Manager界面。
2. 在"主页"右上角单击"下载客户端"，根据界面提示下载"完整客户端"文件到本地，例如软件包名称为"FusionInsight_Cluster_1_Services_Client.tar"。
3. 将下载的客户端文件压缩包解压，获取"FusionInsight_Cluster_1_Services_ClientConfig/HDFS/config"路径下的"core-site.xml"和"hdfs-site.xml"配置文件。
4. 查看"hdfs-site.xml"配置文件中的"dfs.client.failover.proxy.provider.*NameService名称* "配置项，并将其参数值修改成"org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"。
   
   以NameService名称为"hacluster"为例，修改内容为：
   ```
   <property>
   <name>dfs.client.failover.proxy.provider.hacluster</name>
   <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
   </property>
   ```
   
   
**准备访问Paimon数据源用户的user.keytab和krb5.conf文件**。
5. 登录Paimon数据源所在集群的Manager界面。
6. 选择"系统 \> 权限 \> 用户"。
7. 选择对应的数据源人机用户（例如：**paimonuser**），在"操作"列中选择"更多 \> 下载认证凭据"。
8. 解压下载的文件压缩包，获取"user.keytab"和"krb5.conf"文件。
**准备paimon.properties文件**。
9. 在本地创建"paimon.properties"文件，内容参考如下： 
   ```
   connector.name=paimon
   paimon.catalog.type=hive
   paimon.warehouse=hdfs://hacluster/path/to/warehouse
   hive.metastore=thrift
   hive.metastore.uri=thrift://192.168.43.223:21088,thrift://192.168.43.244:21088
   hive.metastore.authentication.type=KERBEROS
   hive.metastore.service.principal=hive/hadoop.3b524ed0_ddfa_43da_dbc4_8977ee1dc42a.com@3B524ED0_DDFA_43DA_DBC4_8977EE1DC42A.COM
   hive.metastore.client.principal=paimonuser@3B524EDO_DDFA_43DA_DBC4_8977EE1DC42A.COM
   hive.metastore.client.keytab=/user/hetuserver/fiber/catalog/paimon/user.keytab
   hive.hdfs.authentication.type=KERBEROS
   hive.config.resources=/user/hetuserver/fiber/catalog/paimon/hdfs-site.xml,/user/hetuserver/fiber/catalog/paimon/core-site.xml
   hive.hdfs.trino.principal=paimonuser@3B524EDO_DDFA_43DA_DBC4_8977EE1DC42A.COM
   hive.hdfs.trino.keytab=/user/hetuserver/fiber/catalog/paimon/user.keytab
   ```
   关键参数介绍：
   - **connector.name**：Trino Paimon插件名称。
   
   - **paimon.catalog.type**：Paimon元数据类型，目前仅支持Hive。
   
   - **paimon.warehouse**：Paimon表实际存储所在的warehouse路径。
   
   - **hive.metastore.client.principal** 、**hive.hdfs.trino.principal** ：访问MetaStore/HDFS使用的用户principal，例如**paimonuser**用户。
   
   - **hive.metastore.client.keytab/hive.hdfs.trino.keytab**：访问MetaStore/HDFS的用户keytab文件所在路径，统一使用"/user/hetuserver/fiber/catalog/paimon"作为前缀。
   
   - **hive.config.resources**：访问HDFS使用的配置资源文件所在路径（包含"core-site.xml"、"hdfs-site.xml"），统一使用"/user/hetuserver/fiber/catalog/paimon"作为前缀，使用逗号分隔开。
   
   
   
   
**配置对接**。
10. 登录集群客户端所在节点，执行以下命令创建存放对接文件的目录，例如"/opt/paimon"： 
    ```
    mkdir /opt/paimon
    ```
    
    
11. 将已准备好的"core-site.xml"、"hdfs-site.xml"、"user.keytab"、"krb5.conf"和"paimon.properties"文件上传至"/opt/paimon"目录下。
12. 执行以下命令切换到客户端安装目录，配置环境变量并认证用户： 
    ```
    cd 客户端安装目录
    ```
    加载环境变量：
    ```
    source bigdata_env
    ```
    如果当前集群已启用Kerberos认证，执行以下命令认证当前用户。如果当前集群未启用Kerberos认证，则无需执行此命令。
    ```
    kinit HetuEngine组件操作用户
    ```
    
    
13. 执行如下命令： 
    1. 创建HDFS目录：
       ```
       hdfs dfs -mkdir /user/hetuserver/fiber/catalog/paimon
       ```
       
    
    2. 上传"core-site.xml"、"hdfs-site.xml"、"user.keytab"、"krb5.conf"和"paimon.properties"文件至HDFS中：
       ```
       hdfs dfs -put core-site.xml hdfs-site.xml user.keytab krb5.conf paimon.properties /user/hetuserver/fiber/catalog/paimon
       ```
       
    
    3. 修改目录权限：
       ```
       hdfs dfs -chown -R hetuserver:hadoop /user/hetuserver/fiber/catalog/paimon
       ```
       
    
    
    
    
14. 在HetuEngine WebUI页面重启HetuEngine计算实例。
 
#### 配置对接普通模式集群的Paimon数据源
**准备core-site.xml和hdfs-site.xml配置文件**。
1. 登录Paimon数据源所在集群的Manager界面。
2. 在"主页"右上角单击"下载客户端"，根据界面提示下载"完整客户端"文件到本地，例如软件包名称为"FusionInsight_Cluster_1_Services_Client.tar"。
3. 将下载的客户端文件压缩包解压，获取"FusionInsight_Cluster_1_Services_ClientConfig/HDFS/config"路径下的"core-site.xml"和"hdfs-site.xml"配置文件。
4. 查看"hdfs-site.xml"文件中的"dfs.client.failover.proxy.provider.*NameService名称* "配置项，并将其参数值修改成"org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"。
   
   以NameService名称为"hacluster"为例，修改内容如下：
   ```
   <property>
   <name>dfs.client.failover.proxy.provider.hacluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> 
   </property>
   ```
   
   
**准备paimon.properties文件**。
1. 在本地创建"paimon.properties"文件，参考内容如下： 
   ```
   connector.name=paimon
   paimon.catalog.type=hive
   paimon.warehouse=hdfs://hacluster/path/to/warehouse
   hive.metastore=thrift
   hive.metastore.uri=thrift://192.168.43.223:21088,thrift://192.168.43.244:21088
   hive.config.resources=/user/hetuserver/fiber/catalog/paimon/hdfs-site.xml,/user/hetuserver/fiber/catalog/paimon/core-site.xml
   ```
   关键参数介绍：
   - **connector.name**：Trino Paimon插件名称。
   
   - **paimon.catalog.type**：Paimon元数据类型，目前仅支持Hive。
   
   - **paimon.warehouse**：Paimon表所在warehouse路径。
   
   - **hive.config.resources**：访问HDFS使用的配置资源文件所在路径（包含"core-site.xml"、"hdfs-site.xml"），统一使用"/user/hetuserver/fiber/catalog/paimon"作为前缀，使用逗号分隔开。
   
   
   
   
**配置对接**。
2. 登录集群客户端所在节点，执行以下命令创建存放对接文件的目录，例如"/opt/paimon"： 
   ```
   mkdir /opt/paimon
   ```
   
   
3. 将已准备好的"core-site.xml"、"hdfs-site.xml"和"paimon.properties"文件上传至"/opt/paimon"目录下。
4. 执行以下命令进入客户端安装目录并配置环境变量： 
   ```
   cd 客户端安装目录
   ```
   加载环境变量：
   ```
   source bigdata_env
   ```
   
   
5. 执行如下命令： 
   1. 创建HDFS目录：
      ```
      hdfs dfs -mkdir /user/hetuserver/fiber/catalog/paimon
      ```
      
   
   2. 上传"core-site.xml"、"hdfs-site.xml"、和"paimon.properties"文件至HDFS中：
      ```
      hdfs dfs -put core-site.xml hdfs-site.xml paimon.properties /user/hetuserver/fiber/catalog/paimon
      ```
      
   
   
   
   
6. 在HetuEngine WebUI页面重启HetuEngine计算实例。
 
#### 支持的语法和数据类型介绍
- 语法介绍 对接Paimon数据源后，支持以下操作：
  - SELECT
  
  - DESCRIBE
  
  - SHOW CATALOGS
  
  - SHOW COLUMNS
  
  - SHOW CREATE SCHEMA
  
  - SHOW CREATE TABLE
  
  - SHOW SCHEMAS
  
  - SHOW TABLES
   
- 数据类型介绍 Paimon对接Trino支持的数据类型请参见[表1]，不支持其他类型，包括MAP、LIST、STRUCT类型。
   表1Paimon和Trino数据类型转换 
  | Paimon type     | Trino type    |
  |:---|:---|
  | BOOLEAN        | BOOLEAN       |
  | TINYINT          | TINYINT        |
  | SMALLINT          | SMALLINT        |
  | INT             | INTEGER        |
  | BIGINT          | BIGINT         |
  | FLOAT          | REAL          |
  | DOUBLE          | DOUBLE       |
  | DECIMAL(p,s)    | DECIMAL(p,s)  |
  | DATE            | DATE         |
  | TIMESTAMP(n)    | TIMESTAMP(n)   |
  | CHAR             | CHAR            |
  | VARCHAR           | VARCHAR        |
  | STRING         | VARCHAR        |
  | BINARY         | VARBINARY    |
  | MAP\<kt, vt\> | MAP\<kt, vt\> |
  | ARRAY            | ARRAY         |
  | STRUCT         | STRUCT        |
     
  
 
