企业的业务服务所产生的一些标准化表单、日志等数据文件,会被周期性地上传到OSS。但是这些存储在OSS的数据文件缺少元数据管理,导致数据难以分析和计算。云原生数据仓库 AnalyticDB MySQL 版元数据发现任务具备自动映射OSS路径、自动对OSS文件分组、自动探索OSS文件字段、自动感知字段变化的能力,能够自动创建和更新数据湖元数据。您可以通过创建OSS元数据发现任务,自动发现同地域下OSS的Bucket和数据文件,将OSS中的数据导入至云原生数据仓库 AnalyticDB MySQL 版。
前提条件
AnalyticDB for MySQL集群的产品系列为湖仓版。
AnalyticDB for MySQL集群与OSS存储空间位于相同地域。
已上传文件到OSS的Bucket中,且OSS路径格式满足如下条件:
OSS路径需为
<BucketName>/目录/.../目录/表/文件
或者<BucketName>/目录/.../目录/表/分区/.../分区/文件
的格式。Bucket层级下至少有一层目录。
OSS路径的同一表或分区中的文件类型必须一致。
OSS路径的同一表或分区中文件的字段类型和字段数量必须一致。
使用限制
同一个OSS路径,在一个集群中只能创建一个元数据任务。
操作步骤
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在湖仓版页签下,单击目标集群ID。
在左侧导航栏,单击
。在元数据发现页面的OSS数据源区域,单击进入向导。
在OSS数据源页签,根据页面提示进行参数配置,配置说明如下:
配置项
参数
说明
数据源配置
数仓模式
为“基于OSS而构建的标准数据仓库”的场景构建自动化元数据发现,识别精度高。
说明自由模式暂不支持。
OSS目录位置
文件所在OSS中的存储路径,以/结尾。
选择不同的OSS目录位置会得到不同的映射结果,详情请参见OSS路径映射到AnalyticDB for MySQL的示例。
重要选择OSS目录位置时,请确保OSS目录位置后至少有一层目录,不能选择到文件的上一层目录。
路径过滤规则(可选)
填写需要映射到AnalyticDB for MySQL文件的存储路径。
包含:填写的存储路径中所有文件都会映射到AnalyticDB for MySQL。
重要当所选存储路径中有多个文件时,文件类型需要相同,且文件中列的类型和列的数量一致,才能进行映射。
排除:填写的存储路径中所有文件不会映射到AnalyticDB for MySQL。
格式解析器
格式解析器会读取数据文件内容,从而确定文件的数据格式。默认为自动解析,即按照顺序调用所有内置解析器。
您可以根据OSS路径中文件的格式,选择与文件格式相同的格式解析器。
重要选择的格式解析器类型和文件格式不一致时,会映射失败。
配置选项(可选)
高级自定义设置项。当格式解析器选择CSV时,您可以设置如下参数:
字段分隔符:指定CSV数据文件的列分隔符。
引用标识:指定解析后AnalyticDB for MySQL表的引用标识符。
表头模式:识别CSV的表头,从而确定表的列名称。
允许单个列字段:是否允许CSV数据文件的一行记录只有一列。
false:不允许。
true:允许。
其他配置:通过参数配置指定是否使用CSV文件第一行作为列名。若有需求请联系技术支持。
调度配置
调度频率
如果想要定期获取数据文件中列或数据的变更,可以通过设置调度频率,定期执行元数据发现任务。
OSS文件数据变更,重新映射到AnalyticDB for MySQL的表数据会根据目标元数据配置规则更新。
目标元数据配置
Schema名称
设置Schema名称,映射到AnalyticDB for MySQL的数据库名称(默认每个发现任务会创建一个新的Schema)。
数据库名称填写,需要注意如下两点:
不能是AnalyticDB for MySQL中已有的库名。
不能与其他元数据任务的库名相同。
配置选项(可选)
OSS文件字段变更或OSS文件删除时,如何更新映射到AnalyticDB for MySQL的表。
文件字段变更规则:
只增加列:OSS文件增加列时,再次执行元数据发现任务,映射到AnalyticDB for MySQL的表也会增加列。
忽略表更新:OSS文件的列或分区变更时,再次执行元数据发现任务,映射到AnalyticDB for MySQL的表仅同步分区,不会增加或删除列。
对象删除变更规则:仅支持忽略删除更新,即OSS文件删除时,再次执行元数据发现任务,映射到AnalyticDB for MySQL的表仍然存在。
重要您可以对映射到AnalyticDB for MySQL的表进行DDL和DML操作。
如果您在AnalyticDB for MySQL表中新增了列,再次执行元数据发现任务,该列不会被覆盖,仍然存在。
若删除了映射到AnalyticDB for MySQL表的某列,再次执行元数据发现任务,被删除的列会被再次映射到AnalyticDB for MySQL。
完成上述参数配置后,单击创建,开始创建元数据发现任务。
说明元数据发现任务创建完成后,自动在您设定的时间周期运行发现任务。如果您想立即同步数据,可以在任务列表的操作栏中单击执行。
任务开始运行后,可以在任务列表界面管理任务的运行情况,支持查看任务的运行状态、配置的修改等。
说明任务运行成功后,可以在AnalyticDB for MySQL的库、表、分区等。
页面,查看映射到
OSS路径映射到AnalyticDB for MySQL的示例
OSS路径映射到AnalyticDB for MySQL的结果,与以下两个因素有关。
OSS文件及其所在路径。
元数据发现任务中选择的OSS目录位置。
系统会根据您选择的OSS目录位置自动将OSS目录位置后的第一层目录名映射为表名,OSS目录位置后的第二层至最后一层目录名映射为分区,示例如下。
OSS路径 | OSS目录位置 | 映射到AnalyticDB for 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 for MySQL的表为分区表,表名为 说明 由于没有分区键,这里使用partition_num来补充。 |
oss://adb/Table2/ | 映射到AnalyticDB for MySQL的表为分区表,表名为 | |
oss://adb/Table2/year/month/ | 映射到AnalyticDB for MySQL的表为非分区表,表名为 | |
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 for MySQL的表为分区表,表名为 |
| 不能映射表。 原因:year=2022或month=03不符合AnalyticDB for MySQL表的命名规则。表命名规则的详细信息,请参见使用限制。 | |
oss://adb/Table4/2020/03/30/file7.csv oss://adb/Table3/2020/03/30/file8.csv | oss://adb/ | 映射到AnalyticDB for MySQL的表为分区表,表名为 说明 由于没有分区键,这里使用partition_num来补充。 |
| 不能映射表。 原因:2020或03不符合AnalyticDB for MySQL表的命名规则。表命名规则的详细信息,请参见使用限制。 |