本文介绍如何通过向导创建元数据爬取任务,爬取任务可以在单次运行中自动为OSS上面的数据文件创建和更新数据湖元数据(一张或多张表),具有自动探索文件数据字段及类型、自动映射目录和分区、自动感知新增列及分区、自动对文件进行分组建表的能力。

操作步骤

  1. 进入元数据爬取页面。
  2. 元数据爬取页面,单击进入向导按钮。
  3. 创建元数据爬取页面左侧,指定要爬取的OSS的数据目录。
  4. 创建元数据爬取页面右侧,根据页面提示进行参数配置,配置说明如下:
    参数 说明
    格式解析器 默认自动解析,即按照顺序调用所有内置解析器,也可指定特定文件类型的格式解析器,比如json、parquet、avro、orc、csv。
    爬取频率 您可以根据需要定期计划运行元数据爬取任务。
    Schema名称 设置Schema名称,即映射到DLA中的数据库名称(默认每个爬取任务会新创建一个独立的Schema)。
    配置选项 高级自定义设置项,如更新,删除规则等。
  5. 完成上述参数配置后,单击创建,开始创建元数据爬取任务。
    说明 元数据爬取任务创建完成后,DLA自动在您设定的时间周期运行爬取任务,如果您想立即同步数据,也可以在任务列表选择立即执行。
  6. 任务开始运行后,会在实例列表显示任务实例的当前运行状态。也可以在任务列表界面管理任务的运行情况,支持查看任务的运行状态、配置的修改、跳转到DLA的SQL窗口进行快速的数据查询。图片

注意事项

  • 元数据爬取会如何生成表名

    元数据爬取会自动为它创建的表生成名称。存储在元数据管理schema目录中的表的名称遵循以下规则:

    • 默认使用最后一级目录名作为表名(针对OSS数据文件)。
    • 仅允许使用字母数字字符和下划线 (_)。
    • 表名的最大长度不能超过 128 个字符。爬取程序会截断生成的名称以适应限制范围。
    • 如果遇到重复的表名,则元数据爬取会在表名后添加MD5字符串后缀。
  • 元数据爬取会如何创建分区

    当元数据爬取扫描OSS目录文件并检测到多个文件时,它会在目录结构中确定表的根目录,以及哪些目录是表的分区。

    表的名称基于OSS目录前缀或目录名,当某个目录级别下大部分的目录结构和文件格式都相同时,爬取程序会创建一张分区表。例如,对于以下 OSS目录结构:
    oss://bucket01/folder1/table1/partition1/fiile.txt
    oss://bucket01/folder1/table1/partition2/fiile.txt
    oss://bucket01/folder1/table2/partition3/fiile.txt
    oss://bucket01/folder1/table2/partition4/fiile.txt

    因为 table1 和 table2 下的目录和文件内容都是相似的,所以爬取程序将创建一个具有两个分区列的表。分区列分别为partition_0(table这一级目录)、partition_1(partition这一级目录)。

    对于以下OSS目录结构:
    oss://bucket01/folder1/table1/partition1/fiile.csv
    oss://bucket01/folder1/table1/partition2/fiile.csv
    oss://bucket01/folder1/table2/partition3/fiile.json
    oss://bucket01/folder1/table2/partition4/fiile.json

    因为table1和table2下的文件格式不同,所以爬取程序将创建两张具有一个分区列的表。table1分区列包含partition1和partition2,table2分区列包含partition3和partition4。

    对于采用 key=value样式的Hive风格分区路径,爬取程序会使用键名自动填充列名称。否则,它使用默认名称,如 partition_0、partition_1 等。

  • 元数据爬取目前支持的格式解析器

    格式解析器会读取数据文件内容,从而确定文件的数据格式。

    DLA为以下类型数据文件提供了一组内置格式解析器,如果用户没有指定特定的格式解析器,元数据爬取会按照以下顺序调用内置解析器。
    解析器类型 备注
    JSON 需要读取文件开头以确定文件格式。
    Parquet 需要读取文件结尾处的schema以确定文件格式。
    CSV 检查以下分隔符:逗号 (,)、竖线 (|)、制表符(\t)、分号(;)、空格( )、(\u0001)。
    ORC 需要读取文件元数据以确定文件格式。
    AVRO 需要读取文件开头处的shema以确定文件格式。