通過元數據發現導入至湖倉版
企業的業務服務所產生的一些標準化表單、日志等數據文件,會被周期性地上傳到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表的命名規則。表命名規則的詳細信息,請參見使用限制。 |