全部產品
Search
文件中心

AnalyticDB:通過中繼資料發現匯入至湖倉版

更新時間:Sep 25, 2024

企業的商務服務所產生的一些標準化表單、日誌等資料檔案,會被周期性地上傳到OSS。但是這些儲存在OSS的資料檔案缺少中繼資料管理,導致資料難以分析和計算。AnalyticDB for MySQL中繼資料發現任務具備自動對應OSS路徑、自動對OSS檔案分組、自動探索OSS檔案欄位、自動感知欄位變化的能力,能夠自動建立和更新資料湖中繼資料。您可以通過建立OSS中繼資料發現任務,自動探索同地區下OSS的Bucket和資料檔案,將OSS中的資料匯入至AnalyticDB for MySQL

前提條件

  • AnalyticDB for MySQL叢集的產品系列為湖倉版

  • AnalyticDB for MySQL叢集與OSS儲存空間位於相同地區。

  • 已上傳檔案到OSS的Bucket中,且OSS路徑格式滿足如下條件:

    • OSS路徑需為<BucketName>/目錄/.../目錄/表/檔案或者<BucketName>/目錄/.../目錄/表/分區/.../分區/檔案的格式。

    • Bucket層級下至少有一層目錄。

    • OSS路徑的同一表或分區中的檔案類型必須一致。

    • OSS路徑的同一表或分區中檔案的欄位類型和欄位數量必須一致。

使用限制

同一個OSS路徑,在一個叢集中只能建立一個中繼資料任務。

操作步驟

  1. 登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,在湖倉版頁簽下,單擊目的地組群ID。

  2. 在左側導覽列,單擊資料接入 > 元數據發現

  3. 元數據發現頁面的OSS資料來源地區,單擊進入向導

  4. 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

  5. 完成上述參數配置後,單擊建立,開始建立中繼資料發現任務。

    說明

    中繼資料發現任務建立完成後,自動在您設定的時間周期運行發現任務。如果您想立即同步資料,可以在工作清單的操作欄中單擊執行

  6. 任務開始運行後,可以在工作清單介面管理工作的運行情況,支援查看任務的運行狀態、配置的修改等。

    說明

    任務運行成功後,可以在作業開發 > SQL開發頁面,查看映射到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的表為分區表,表名為Table2,分區欄位為partition_0partition_1partition_2

說明

由於沒有分區鍵,這裡使用partition_num來補充。

oss://adb/Table2/

映射到AnalyticDB for MySQL的表為分區表,表名為year,分區欄位為partition_0partition_1

oss://adb/Table2/year/month/

映射到AnalyticDB for 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 for MySQL的表為分區表,表名為Table3,分區欄位為yearmonthday

  • oss://adb/Table3/

  • oss://adb/Table3/year=2022/

不能映射表。

原因: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的表為分區表,表名為Table4,分區欄位為partition_0partition_1partition_2

說明

由於沒有分區鍵,這裡使用partition_num來補充。

  • oss://adb/Table3/

  • oss://adb/Table3/2020/

不能映射表。

原因:2020或03不符合AnalyticDB for MySQL表的命名規則。表命名規則的詳細資料,請參見使用限制