云原生数据仓库AnalyticDB MySQL版湖仓版(3.0)支持通过向导创建OSS元数据发现任务,自动发现与湖仓版(3.0)集群相同地域下OSS的Bucket和数据文件。本文介绍如何通过元数据发现将OSS数据导入至湖仓版(3.0)

背景信息

企业的业务服务所产生的一些标准化表单、日志等数据文件,会被周期性地上传到OSS。但是这些存储在OSS的文件缺少元数据管理,导致难以分析和计算。元数据发现任务具备自动映射OSS路径、自动对OSS文件分组、自动探索OSS文件字段、自动感知字段变化的能力,能够自动创建和更新数据湖元数据。

前提条件

  • 已在湖仓版(3.0)集群同一地域开通OSS服务并创建存储空间。详情请参见开通OSS服务控制台创建存储空间
  • 已上传文件到OSS的Bucket中,且OSS路径格式满足如下条件。
    • OSS路径需为“<Bucket_name>/目录/.../目录/表/文件”或者“<Bucket_name>/目录/.../目录/表/分区/.../分区/文件”的格式。
    • Bucket层级下至少有一层目录。
    • OSS路径的同一表或分区中的文件类型必须一致。
    • OSS路径的同一表或分区中文件的字段类型和字段数量必须一致。

使用限制

同一个OSS路径,在一个集群中只能创建一个元数据任务。

操作步骤

  1. 登录云原生数据仓库AnalyticDB MySQL控制台
  2. 在页面左上角,选择集群所在地域。
  3. 在左侧导航栏,单击集群列表
  4. 湖仓版(3.0)页签下,单击目标集群ID
  5. 在左侧导航栏,单击数据接入 > 元数据发现
  6. 元数据发现页面的OSS数据源区域,单击进入向导
  7. OSS数据源页签,根据页面提示进行参数配置,配置说明如下:
    配置项参数说明
    数据源配置数仓模式为“基于OSS而构建的标准数据仓库”的场景构建自动化元数据发现,识别精度高。
    说明 自由模式暂不支持。
    OSS目录位置文件所在OSS中的存储路径,以/结尾。

    选择不同的OSS目录位置会得到不同的映射结果,详情请参见OSS路径映射到AnalyticDB MySQL的示例

    重要 选择OSS目录位置时,请确保OSS目录位置后至少有一层目录,不能选择到文件的上一层目录。
    路径过滤规则填写需要映射到AnalyticDB MySQL文件的存储路径。
    • 包含:填写的存储路径中所有文件都会映射到AnalyticDB MySQL
      重要 当所选存储路径中有多个文件时,文件类型需要相同,且文件中列的类型和列的数量一致,才能进行映射。
    • 排除:填写的存储路径中所有文件不会映射到AnalyticDB MySQL
    格式解析器格式解析器会读取数据文件内容,从而确定文件的数据格式。默认为自动解析,即按照顺序调用所有内置解析器。
    您可以根据OSS路径中文件的格式,选择与文件格式相同的格式解析器。
    重要 选择的格式解析器类型和文件格式不一致时,会映射失败。
    配置选项(可选)高级自定义设置项。当格式解析器选择CSV时,您可以设置如下参数:
    • 字段分隔符:指定CSV数据文件的列分隔符。
    • 引用标识:指定解析后AnalyticDB MySQL表的引用标识符。
    • 表头模式:识别CSV的表头,从而确定表的列名称。
    • 允许单个列字段:是否允许CSV数据文件的一行记录只有一列。
      • false:不允许。
      • true:允许。
    • 其他配置:通过参数配置指定是否使用CSV文件第一行作为列名。若有需求请联系技术支持。
    调度配置调度频率如果想要定期获取数据文件中列或数据的变更,可以通过设置调度频率,定期执行元数据发现任务。

    OSS文件数据变更,重新映射到AnalyticDB MySQL的表数据会根据目标元数据配置规则更新。

    目标元数据配置Schema名称设置Schema名称,映射到AnalyticDB MySQL的数据库名称(默认每个发现任务会创建一个新的Schema)。
    数据库名称填写,需要注意如下两点:
    • 不能是AnalyticDB MySQL中已有的库名。
    • 不能与其他元数据任务的库名相同。
    配置选项(可选)OSS文件字段变更或OSS文件删除时,如何更新映射到AnalyticDB MySQL的表。
    • 文件字段变更规则:仅支持只增加列,即OSS文件增加列时,再次执行元数据发现任务,映射到AnalyticDB MySQL的表也会增加列。
    • 对象删除变更规则:仅支持忽略删除更新,即OSS文件删除时,再次执行元数据发现任务,映射到AnalyticDB MySQL的表仍然存在。
    重要 您可以对映射到AnalyticDB MySQL的表进行DDL和DML操作。
    • 如果您在AnalyticDB MySQL表中新增了列,再次执行元数据发现任务,该列不会被覆盖,仍然存在。
    • 若删除了映射到AnalyticDB MySQL表的某列,再次执行元数据发现任务,被删除的列会被再次映射到AnalyticDB MySQL
  8. 完成上述参数配置后,单击创建,开始创建元数据发现任务。
    说明 元数据发现任务创建完成后,自动在您设定的时间周期运行发现任务。如果您想立即同步数据,可以在任务列表的操作栏中单击执行
  9. 任务开始运行后,可以在任务列表界面管理任务的运行情况,支持查看任务的运行状态、配置的修改等。
    说明 任务运行成功后,可以在作业开发 > SQL开发页面,查看映射到AnalyticDB MySQL的库、表、分区等。

OSS路径映射到AnalyticDB MySQL的示例

OSS路径映射到AnalyticDB MySQL的结果,与以下两个因素有关。
  • OSS文件及其所在路径。
  • 元数据发现任务中选择的OSS目录位置
系统会根据您选择的OSS目录位置自动将OSS目录位置后的第一层目录名映射为表名,OSS目录位置后的第二层至最后一层目录名映射为分区,示例如下。
OSS路径OSS目录位置映射到AnalyticDB MySQL的表
oss://adb/Table1/file1.csv

oss://adb/Table1/file2.json

oss://adb/不能映射表。
原因:Table1目录下的文件类型为CSV和JSON,文件类型不一致,故而不能映射表。
重要 如果文件类型相同,但文件中字段的数据类型不一致,也不能进行映射。
oss://adb/Table2/year/month/day/file3.json

oss://adb/Table2/year/month/day/file4.json

oss://adb/映射到AnalyticDB MySQL的表为分区表,表名为Table2,分区字段为partition_0partition_1partition_2
说明 由于没有分区键,这里使用partition_num来补充。
oss://adb/Table2/映射到AnalyticDB MySQL的表为分区表,表名为year,分区字段为partition_0partition_1
oss://adb/Table2/year/month/映射到AnalyticDB MySQL的表为非分区表,表名为day
oss://adb/Table2/year/month/day/不能映射表。

原因:选择的OSS目录位置后无其他层目录。

oss://adb/Table3/year=2022/month=03/day=01/file5.csv

oss://adb/Table3/year=2022/month=03/day=01/file6.csv

oss://adb/映射到AnalyticDB MySQL的表为分区表,表名为Table3,分区字段为yearmonthday
  • oss://adb/Table3/
  • oss://adb/Table3/year=2022/
不能映射表。

原因:year=2022或month=03不符合AnalyticDB MySQL表的命名规则。表命名规则的详细信息,请参见使用限制

oss://adb/Table4/2020/03/30/file7.csv

oss://adb/Table3/2020/03/30/file8.csv

oss://adb/映射到AnalyticDB MySQL的表为分区表,表名为Table4,分区字段为partition_0partition_1partition_2
说明 由于没有分区键,这里使用partition_num来补充。
  • oss://adb/Table3/
  • oss://adb/Table3/2020/
不能映射表。

原因:2020或03不符合adb表的命名规则。表命名规则的详细信息,请参见使用限制