
# 在DLI控制台创建数据目录、数据库和表
- **数据目录（Catalog）** 是元数据管理对象，一个数据目录下可以包含多个数据库。
  "数据目录"用于"[DLI对接LakeFormation](https://support.huaweicloud.com/usermanual-dli/dli_01_0629.html)"场景下的"在DLI控制台创建LakeFormation数据目录映射"操作。目前"DLI对接LakeFormation"功能处于受限使用阶段。您需提交工单申请开通该功能，开通后才可在DLI管理控制台的SQL编辑器页面查看数据目录。
  DLI当前支持DLI数据目录和LakeFormation数据目录：
  - **DLI数据目录：**DLI服务提供的数据目录服务，用于存储和管理数据湖中的元数据。DLI数据目录名称默认为dli。
  
  - **LakeFormation数据目录：**湖仓构建LakeFormation服务提供了元数据统一管理能力，在DLI管理控制台需要创建到LakeFormation Catalog的连接，才可以访问LakeFormation实例中存储的Catalog。DLI对接LakeFormation默认实例且完成LakeFormation的资源授权后，即可以在作业开发时使用LakeFormation元数据。
   
- **数据库**是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。
- **表** 是数据库最重要的组成部分之一。表是由行与列组合成的。每一列被当作是一个字段。每个字段中的值代表一种类型的数据。
  数据库是一个框架，表是其实质内容。一个数据库包含一个或者多个表。
  
用户可通过管理控制台或SQL语句创建数据库和表：
使用SQL语句创建数据库和表的操作方法请参见[创建数据库](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0071.html)、[创建OBS表](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0076.html)和[创建DLI表](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0098.html)等。
**本章节介绍在管理控制台创建数据目录、数据库和表的操作步骤。**
![](https://support.huaweicloud.com/usermanual-dli/public_sys-resources/note_3.0-zh-cn.png)
- View只能通过SQL语句进行创建，不能通过"创建表"页面进行创建。
- 使用SQL语句创建的Hudi表需要配置同步Hive的参数后才能在DLI管理控制台的数据库和表中查看。 [为什么创建的Hudi表没有在DLI控制台上显示？](https://support.huaweicloud.com/dli_faq/dli_03_0277.html)
  
 
#### 注意事项
创建数据目录、数据库和表时，默认具备权限控制，需要对其他用户授权后，其他用户才可查看该用户新建的数据目录、数据库和表。
#### 创建数据目录
DLI管理控制台默认提供DLI数据目录，您还可以按照本节操作在DLI管理控制台创建到LakeFormation Catalog的连接，创建完成后即可在DLI管理控制台的数据目录下显示LakeFormation Catalog。
1. **在DLI创建到LakeFormation Catalog的连接前，请先确保在LakeFormation管理控制台已创建数据目录** 。
   1. 登录[LakeFormation管理控制台](https://console.huaweicloud.com/lake-formation/)。
   
   2. 选择"元数据 \> Catalog"。
   
   3. 单击"创建Catalog"。 按需配置Catalog实例参数。
      更多参数配置及说明，请参考[创建Catalog](https://support.huaweicloud.com/usermanual-lakeformation/lakeformation_03_00010.html)。
      
   
   4. 创建完成后，即可在"Catalog"页面查看Catalog相关信息。 DLI仅支持对接LakeFormation默认实例，请在LakeFormation设置实例为默认实例。
      
    
2. **在DLI管理控制台创建数据目录**
   在DLI管理控制台需要创建到LakeFormation Catalog的连接，才可以在DLI提交作业时访问LakeFormation实例中存储的Catalog。
   DLI管理控制台有三个页面支持创建数据目录连接，创建后的数据目录连接均可在SQL编辑器的数据目录页签下可见。
   - 在SQL编辑器的"数据目录"页签单击![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002346246741.png "点击放大")，即可创建到LakeFormation Catalog的连接。
   
   - Flink作业的编辑页面，在"数据目录名称"后单击![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002346356765.png "点击放大")，即可创建到LakeFormation Catalog的连接。（仅Flink 1.17及以上版本支持配置数据目录。）
   
   - Spark作业的编辑页面，在"数据目录名称"后单击![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002312367550.png "点击放大")，即可创建到LakeFormation Catalog的连接。（仅Spark 3.3.1版本支持配置数据目录。）
   
   
   ![](https://support.huaweicloud.com/usermanual-dli/public_sys-resources/note_3.0-zh-cn.png)
   LakeFormation中每一个数据目录只能创建一个映射，不能创建多个。
   例如用户在DLI创建了映射名catalogMapping1对应LakeFormation数据目录catalogA。创建成功后，在同一个项目空间下，不能再创建到catalogA的映射。
   以在SQL编辑器的"数据目录"创建数据目录连接为例：
   1. 登录[DLI管理控制台](https://console.huaweicloud.com/dli/)。
   
   2. 选择"SQL编辑器 "。
   
   3. 在SQL编辑器页面，选择"数据目录"。
   
   4. 单击![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002337394313.png)创建数据目录。
   
   5. 配置数据目录相关信息。
      表1数据目录配置信息 
      | 参数名称     | 是否必填 | 说明                                                                                                                                                                                                  |
      |:---|:---|:---|
      | 外部数据目录名称 | 是    | LakeFormation默认实例下的Catalog名称。                                                                                                                                                                       |
      | 类型       | 是    | 当前只支持LakeFormation。 该选项已固定，无需填写。                                                                             |
      | 数据目录映射名称 | 是    | 在DLI使用的Catalog映射名，用户在执行SQL语句的时候需要指定Catalog映射，以此来标识访问的外部的元数据。建议与外部数据目录名称保持一致。 当前仅支持连接LakeFormation默认实例的数据目录。 |
      | 描述       | 否    | 自定义数据目录的描述信息。                                                                                                                                                                                       |
         
      
   
   6. 单击"确定"创建数据目录。
   
   7. 创建完成后，数据目录列表会显示数据目录的连接状态：
      - 闪烁的![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002345896117.png)代表**创建中**。
      
      - ![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002304542756.png)代表已创建完成，数据目录连接**已激活**。
      
      - ![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002338743113.png)**创建失败**。建议删除当前数据连接后重新添加数据目录。
       
     
 
#### 创建数据库
1. 创建数据库的入口有两个，分别在"数据管理"和"SQL编辑器"页面。 
   - 在"数据管理"页面创建数据库。
     1. 在单击[DLI管理控制台](https://console.huaweicloud.com/dli/)左侧，单击"数据管理"\>"库表管理"。
     
     2. 在库表管理页面右上角，单击"创建数据库"可创建数据库。
      
   
   - 在"SQL编辑器"页面创建数据库。
     1. 在单击[DLI管理控制台](https://console.huaweicloud.com/dli/)左侧，单击"SQL编辑器"。
     
     2. 在左侧导航栏单击"数据库"页签右侧![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0237539077.png)可创建数据库。
      
   
   
   
   
2. 在"创建数据库"页面，参见[表2]输入数据库名称和描述信息。
   
   图1库表管理-创建数据库   
   ![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000001210117650.png "点击放大")
    表2参数说明 
   | 参数名称  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   |:---|:---|
   | 数据库名称 | - 数据库名称只能包含数字、英文字母和下划线，但不能是纯数字，且不能以下划线开头。  - 数据库名称大小写不敏感且不能为空。  - 输入长度不能超过128个字符。   说明： "default"为内置数据库，不能创建名为"default"的数据库。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 企业项目  | 如果所建队列属于企业项目，可选择对应的企业项目。 企业项目是一种云资源管理方式，企业项目管理服务提供统一的云资源按项目管理，以及项目内的资源管理、成员管理。 关于如何设置企业项目请参考《[企业管理用户指南](https://support.huaweicloud.com/usermanual-em/zh-cn_topic_0108763975.html)》。 说明： 只有开通了企业管理服务的用户才显示该参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 描述    | 该数据库的描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 标签    | 使用标签标识云资源。包括标签键和标签值。如果您需要使用同一标签标识多种云资源，即所有服务均可在标签输入框下拉选择同一标签，建议在标签管理服务（TMS）中创建预定义标签。 如您的组织已经设定DLI的相关标签策略，则需按照标签策略规则为资源添加标签。标签如果不符合标签策略的规则，则可能会导致资源创建失败，请联系组织管理员了解标签策略详情。 具体请参考《[标签管理服务用户指南](https://support.huaweicloud.com/usermanual-tms/zh-cn_topic_0056266269.html)》。 说明： - 最多支持20个标签。  - 一个"键"只能添加一个"值"。  - 每个资源中的键名不能重复。   - 标签键：在输入框中输入标签键名称。 说明： 标签的键的最大长度为128个字符，标签的键可以包含任意语种字母、数字、空格和_ . : +-@ ,但首尾不能含有空格，不能以_sys_开头。     - 标签值：在输入框中输入标签值。 说明： 标签值的最大长度为255个字符，标签的值可以包含任意语种字母、数字、空格和_ . : +-@ 。    |
      
   
   
3. 单击"确定"，完成数据库创建。 
   数据库创建成功后，您可以在"库表管理"页面或者"SQL编辑器"页面查看和选择使用对应的数据库。
   
   
 
#### 创建表
创建表前，请确保已创建数据库。
1. 创建表的入口有两个，分别在"数据管理"和"SQL编辑器"页面。 
   ![](https://support.huaweicloud.com/usermanual-dli/public_sys-resources/note_3.0-zh-cn.png)
   此处创建表的方式不支持创建View，HBase（CloudTable/MRS）表、OpenTSDB（CloudTable/MRS）表、DWS表、RDS表和CSS表等跨源连接表。可通过SQL方式创建View和跨源连接表，具体请参考《[数据湖探索SQL语法参考](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0119.html)》。
   - 在"数据管理"页面创建表。
     1. 在管理控制台左侧，单击"数据管理"\>"库表管理"。
     
     2. 在库表管理页面中，选择需要建表的数据库。在其"操作"栏中，单击"更多"\>"创建表"，可创建当前数据库下的表。
      
   
   - 在"SQL编辑器"页面创建表。
     1. 在管理控制台左侧，单击"SQL编辑器"。
     
     2. 在"SQL编辑器"页面的左侧导航栏单击"数据库"页签。有两种方式创建表。
        - 鼠标左键单击数据库名，进入"表"区域，单击右侧![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0237539075.png)，创建当前数据库下的表。
        
        - 鼠标左键单击对应数据库右侧的![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0237532018.png)，在列表菜单中选择"创建表"，创建当前数据库下的表。
         
      
   
   
   
   
2. 在"创建表"页面，填写参数。 
   - 当数据位置为DLI时，请参见[表3]填写相关参数；
     图2创建表-DLI   
     ![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000001210438696.png "点击放大") 
   
   - 当数据位置为OBS时，请参见[表3]和[表4]填写相关参数。
     当OBS的目录下有同名文件夹和文件时，创建OBS表指向该路径会优先指向文件而非文件夹。
     图3创建表-OBS   
     ![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000001210278960.png "点击放大")
      表3通用参数说明 
     | 参数名称 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 示例      |
     |:---|:---|:---|
     | 表名称  | - 表名称只能包含数字、英文字母和下划线，但不能是纯数字，且不能以下划线开头。  - 表名称大小写不敏感且不能为空。  - 表名称支持包含"$"符号。例如：$test。  - 输入长度不能超过128个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | table01 |
     | 数据位置 | 数据存储位置，当前支持DLI和OBS。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | DLI     |
     | 描述   | 该表的描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | -       |
     | 列类型  | 选择为"普通列"或"分区列"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 普通列     |
     | 列名称  | 表的列名。列名应至少包含一个字母，并允许下划线（_），但不支持纯数字。 可选择"普通列"或"分区列"。"分区列"是分区表专用的，对用户数据进行分区，可提高查询效率。 说明： 列名不区分大小写，不能相同。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | name    |
     | 数据类型 | 与"列名"对应，表示该列的数据类型。 - 字符串（string）：字符串类型。  - 有符号整数（int）：存储空间为4字节。  - 日期类型（date）：所表示日期的范围为0000-01-01 to 9999-12-31。  - 双精度浮点型（double）：存储空间为8字节。  - 布尔类型（boolean）：存储空间为1字节。  - 固定有效位数和小数位数的数据类型（decimal）：有效位数为1\~38之间的正整数，包含1和38；小数位数为小于10的整数。  - 有符号整数（smallint/short）：存储空间为2字节。  - 有符号整数（bigint/long）：存储空间为8字节。  - 时间戳（timestamp）：表示日期和时间，可达到小数点后6位。  - 单精度浮点型（float）：存储空间为4字节。  - 有符号整数（tinyint）：存储空间为1字节。仅OBS表支持。   | string  |
     | 列描述  | 该列的描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | -       |
     | 操作   | - 增加列  - 删除列 说明： 当列数较多时，建议您使用SQL语句创建表，或直接从本地Excel导入列信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | -       |
        
      表4数据位置为OBS的参数说明 
     | 参数名称    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 示例                        |
     |:---|:---|:---|
     | 数据格式    | 支持以下数据格式。 - Parquet：DLI支持读取不压缩、snappy压缩、gzip压缩的parquet数据。  - CSV：DLI支持读取不压缩、gzip压缩的csv数据。  - ORC：DLI支持读取不压缩、snappy压缩的orc数据。  - JSON：DLI支持读取不压缩、gzip压缩的json数据。  - Avro：DLI支持读取不压缩的avro数据。   | CSV                       |
     | 存储路径    | 输入或选择OBS路径。路径同时支持文件和文件夹： - 创建**OBS表**时指定的路径必须是文件夹，如果建表路径是文件，后续将不支持导入数据。  - 当OBS的目录下有同名文件夹和文件时，数据导入指向该路径会优先指向文件而非文件夹。                                                                                                                                                                                                                                                                     | obs://obs1/sampledata.csv |
     | 表头:无/有  | 当"数据格式"为"CSV"时，该参数有效。设置导入数据源是否含表头。 选中"高级选项"，勾选"表头:无"前的方框，"表头:无"显示为"表头:有"，表示有表头；取消勾选即为"表头:无"，表示无表头。                                                                                                                                                                                                                                                                                                                                                                                                                                                | -                         |
     | 自定义分隔符  | 当"数据格式"为"CSV"，并在自定义分隔符前的方框打勾时，该参数有效。 选中高级选项，支持选择如下分隔符。 - 逗号(,)  - 竖线(\|)  - 制表符(\\t)  - 其他：输入自定义分隔符                                                                                                                 | 逗号(,)                     |
     | 自定义引用字符 | 当"数据格式"为"CSV"，并在自定义引用字符前的方框打勾时，该参数有效。 选中高级选项，支持选择如下引用字符。 - 单引号(')  - 双引号(")  - 其他：输入自定义引用字符                                                                                                                                                                                         | 单引号(')                    |
     | 自定义转义字符 | 当"数据格式"为"CSV"，并在自定义转义字符前的方框打勾时，该参数有效。 选中高级选项，支持选择如下转义字符。 - 反斜杠(\\)  - 其他：输入自定义转义字符                                                                                                                                                                                                                                                                | 反斜杠(\\)                   |
     | 日期格式    | 当"数据格式"为"CSV"和"JSON"时此参数有效。 选中"高级选项"，该参数表示表中日期的格式，默认格式为"yyyy-MM-dd"。日期格式字符定义详见[加载数据](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0100.html)中的"表3 日期及时间模式字符定义"。                                                                                                                                                                                                                                                                                                                                                                        | 2000-01-01                |
     | 时间戳格式   | 当"数据格式"为"CSV"和"JSON"时此参数有效。 选中"高级选项"，该参数表示表中时间戳的格式，默认格式为"yyyy-MM-dd HH:mm:ss"。时间戳格式字符定义详见[加载数据](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0100.html)中的"表3 日期及时间模式字符定义"。                                                                                                                                                                                                                                                                                                                                                              | 2000-01-01 09:00:00       |
        
     
   
   
   
   
3. 单击"确定"，完成表创建。 
   表创建成功后，您可以在"表管理"页面或者"SQL编辑器"页面查看和选择使用对应的表。
   
   
 
#### 相关操作
表创建完成后，您可以选择向该表导入其他OBS桶中的数据。
导入数据请参考[将OBS数据导入至DLI的表](https://support.huaweicloud.com/usermanual-dli/dli_01_0253.html)。
