云原生数据仓库AnalyticDB MySQL版湖仓版(3.0)支持通过向导创建OSS元数据发现任务,自动发现与湖仓版(3.0)集群相同地域下OSS的Bucket和数据文件。本文介绍如何通过元数据发现将OSS数据导入至湖仓版(3.0)。
背景信息
企业的业务服务所产生的一些标准化表单、日志等数据文件,会被周期性地上传到OSS。但是这些存储在OSS的文件缺少元数据管理,导致难以分析和计算。元数据发现任务具备自动映射OSS路径、自动对OSS文件分组、自动探索OSS文件字段、自动感知字段变化的能力,能够自动创建和更新数据湖元数据。
前提条件
使用限制
同一个OSS路径,在一个集群中只能创建一个元数据任务。
操作步骤
- 登录云原生数据仓库AnalyticDB MySQL控制台。
- 在页面左上角,选择集群所在地域。
- 在左侧导航栏,单击集群列表。
- 在湖仓版(3.0)页签下,单击目标集群ID。
- 在左侧导航栏,单击 。
- 在元数据发现页面的OSS数据源区域,单击进入向导。
- 在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。
- 包含:填写的存储路径中所有文件都会映射到AnalyticDB MySQL。
- 完成上述参数配置后,单击创建,开始创建元数据发现任务。说明 元数据发现任务创建完成后,自动在您设定的时间周期运行发现任务。如果您想立即同步数据,可以在任务列表的操作栏中单击执行。
- 任务开始运行后,可以在任务列表界面管理任务的运行情况,支持查看任务的运行状态、配置的修改等。说明 任务运行成功后,可以在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_0 、partition_1 和partition_2 。说明 由于没有分区键,这里使用partition_num来补充。 |
oss://adb/Table2/ | 映射到AnalyticDB MySQL的表为分区表,表名为year ,分区字段为partition_0 和partition_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 ,分区字段为year 、month 和day 。 |
| 不能映射表。 原因: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_0 、partition_1 和partition_2 。说明 由于没有分区键,这里使用partition_num来补充。 |
| 不能映射表。 原因:2020或03不符合adb表的命名规则。表命名规则的详细信息,请参见使用限制。 |