企業的商務服務所產生的一些標準化表單、日誌等資料檔案,會被周期性的直接上傳到OSS。但是這些儲存在OSS的檔案缺少中繼資料管理,導致難以分析和計算。中繼資料發現任務可以在單次運行中自動為OSS上面的資料檔案建立和更新資料湖中繼資料(一張或多張表),具有自動探索檔案資料欄位及類型、自動對應目錄和分區、自動感知新增列及分區、自動對檔案進行分組建表的能力。
OSS資料來源配置模式
OSS資料來源配置支援數倉模式和自由模式,兩種模式差異如下:
OSS資料來源配置 | 使用情境 | OSS路徑格式要求 | 識別精度 | 效能 |
數倉模式 | 使用者直接上傳資料到OSS,並期望構建可分析與計算的標準資料倉儲。 | 庫/表/檔案”或者“庫/表/分區/.../分區/檔案 | 高 | 高 |
自由模式 | 已存在OSS資料,但OSS的路徑不清晰。期望通過元資訊發現,構建可分析的庫表分區。 | 無要求 | 一般 | 一般 |
數倉模式的OSS路徑格式要求
OSS是一個開放的檔案系統,為了高效的在OSS上面構建資料倉儲,資料來源路徑格式需要有一定的規範性。OSS資料來源數倉模式的元資訊發現只支援庫/表/檔案或者庫/表/分區/.../分區/檔案的路徑格式(根目錄對應schema;第二級子目錄對應Table,且子目錄名需要映射到表名;第三級以上如果還有目錄,就對應為分區)。
上述數倉模式的OSS資料來源進行元資訊發現後,在DLA中自動對應的表如下所述:
OSS資料來源目錄名稱 | DLA中自動對應的表名稱 | 映射說明 |
Table1 | 不建立表 | Table1目錄下的檔案類型為csv和json,不一致,故而不能進行映射建立表。同一目錄下的檔案類型必須一致才能進行映射。 說明 如果檔案類型相同,但是檔案裡面的欄位不是同一種類型也不能進行映射。 |
Table2 | 建立表Table2 | Table2目錄下的檔案類型都為csv,可以進行映射。 |
Table3 | 建立分區表Table3 | 分區格式為year=xx/month=xx/day=xx/。自動對應了以下分區:
|
Table4 | 建立分區表Table4 | 分區格式為age=xx。自動對應了age=20分區。 |
Table5 | 建立分區表Table5 | 分區格式為partition_0=xx/partition_1=xx/partition_2=xx/。自動對應了以下分區:
說明 由於沒有分區鍵,這裡使用partition_num來補充。 |
操作步驟
- 登入Data Lake Analytics管理主控台。
- 在左側導覽列,單擊 。
- 在元資訊發現頁面的OSS資料來源地區,單擊進入嚮導。
- 在OSS資料來源頁簽,根據頁面提示進行參數配置,配置說明如下:
參數 說明 數倉模式和自由模式 您可以選擇數倉模式或自由模式: - 數倉模式:為“基於OSS而構建的標準資料倉儲”的情境構建自動化元資訊發現,識別精度高。OSS路徑資料布局要求為“庫/表/檔案”或者“庫/表/分區/.../分區/檔案”。
- 自由模式:為“探索OSS上的資料進行分析”的情境構建自動化元資訊發現。對OSS資料布局沒有要求,可能會產生差異化的表。
OSS目錄位置 檔案在OSS中的儲存地址,以/結尾。系統會根據您選擇的檔案夾路徑,自動化佈建OSS路徑。 說明 系統會自動拉取與DLA同地區的OSS Bucket,您可以根據業務需要從下拉式清單中選擇Bucket。選擇Bucket後,系統會自動列出該Bucket下所有的Object和檔案;選中目標Object和檔案後,系統會自動將其添加到右側的OSS路徑處。格式解析器 格式解析器會讀取資料檔案內容,從而確定檔案的資料格式。預設自動解析,即按照順序調用所有內建解析器,也可指定特定檔案類型的格式解析器,比如json、parquet、avro、orc、csv。 - json:需要讀取檔案開頭以確定檔案格式。
- parquet:需要讀取檔案結尾處的schema以確定檔案格式。
- avro:需要讀取檔案開頭處的shema以確定檔案格式。
- orc:要讀取檔案中繼資料以確定檔案格式。
- csv:檢查以下分隔字元:逗號(,)、豎線(|)、定位字元(\t)、分號(;)、空格( )、(\u0001)。
配置選項 進階自訂設定項,如更新,刪除規則等。 調度頻率 您可以根據需要定期計劃運行元資訊發現任務。 Schema名稱 設定Schema名稱,即映射到DLA中的資料庫名稱(預設每個發現任務會新建立一個獨立的Schema)。 - 完成上述參數配置後,單擊建立,開始建立元資訊發現任務。說明 元資訊發現任務建立完成後,DLA自動在您設定的時間周期運行發現任務,如果您想立即同步資料,也可以在工作清單選擇立即執行。
- 任務開始運行後,會在執行個體列表顯示任務執行個體的當前運行狀態。也可以在工作清單介面管理工作的運行情況,支援查看任務的運行狀態、配置的修改、跳轉到DLA的SQL視窗進行快速的資料查詢。
注意事項
數倉模式的注意事項如下:
- 如果OSS資料來源路徑沒有被DLA識別出來,您需要查看路徑下的檔案類型是否相同。如果是CSV檔案,您可以在解析器CSV中配置具體的參數比如分隔字元、逸出字元、是否有表頭等。
- 由於元資訊發現通過採樣的方式並不能覆蓋所有的記錄,如果不同行的欄位變化很大,會出現產生的表欄位減少的情況。
- 在識別分區及表的時候,只支援子目錄下只有檔案的情境。如果目錄下既有子目錄又有檔案,則該目錄會被忽略掉,從而導致分區沒有產生。
自由模式的注意事項如下:
- 元資訊發現會如何產生表名
元資訊發現會自動為它建立的表產生名稱。儲存在中繼資料管理schema目錄中的表的名稱遵循以下規則:
- 預設使用最後一級目錄名作為表名(針對OSS資料檔案)。
- 僅允許使用字母、數字、字元和底線(_)。
- 表名的最大長度不能超過 128 個字元。發現程式會截斷產生的名稱以適應限制範圍。
- 如果遇到重複的表名,則元資訊發現會在表名後添加MD5字串尾碼。
- 元資訊發現如何建立分區
當元資訊發現掃描OSS目錄檔案並檢測到多個檔案時,它會在目錄結構中確定表的根目錄,以及哪些目錄是表的分區。
表的名稱基於OSS目錄首碼或目錄名,當某個目錄層級下大部分的目錄結構和檔案格式都相同時,發現程式會建立一張分區表。例如,對於以下OSS目錄結構:oss://bucket01/folder1/table1/partition1/fiile.txt oss://bucket01/folder1/table1/partition2/fiile.txt oss://bucket01/folder1/table2/partition3/fiile.txt oss://bucket01/folder1/table2/partition4/fiile.txt
因為table1和table2下的目錄和檔案內容都是相似的,所以發現程式將建立一個具有兩個分區列的表。分區列分別為partition_0(table這一級目錄)、partition_1(partition這一級目錄)。
對於以下OSS目錄結構:oss://bucket01/folder1/table1/partition1/fiile.csv oss://bucket01/folder1/table1/partition2/fiile.csv oss://bucket01/folder1/table2/partition3/fiile.json oss://bucket01/folder1/table2/partition4/fiile.json
因為table1和table2下的檔案格式不同,所以發現程式將建立兩張具有一個分區列的表。table1分區列包含partition1和partition2,table2分區列包含partition3和partition4。
對於採用key=value樣式的Hive風格分區路徑,發現程式會使用鍵名自動填滿列名稱。否則,它使用預設名稱,如partition_0、partition_1 等。