MaxCompute支援使用外部表格功能查詢和分析儲存於OSS等外部儲存系統的資料。
功能介紹
MaxCompute SQL作為分布式資料處理的主要入口,可實現EB層級離線資料的快速處理。隨著巨量資料業務的不斷擴充,新的資料使用情境在不斷產生,很多資料集中在湖上、即時數倉中、NoSQL資料庫中或其他系統裡。
MaxCompute不僅適用於資料倉儲情境,同時也由於底層採用了巨量資料分布式儲存和計算架構,其容量、計算吞吐效率、多引擎能力和開放性也適用資料湖情境。因此,面對外部資料計算情境,存在兩種主要模式:
模式一:先匯入再計算
將資料匯入MaxCompute。結構化資料以表形態支援SQL計算或對三方引擎提供開放能力,非結構化資料也可以存入MaxCompute並計算。在MaxCompute中可以獲得更高的資料讀寫效率和更一體化的體驗。
模式二:直接在外部計算
當需要基於資料湖構建更靈活的資料體系時,MaxCompute SQL也可作為計算引擎在數倉外部計算。
MaxCompute提供面對數倉強管理體系下的計算能力,同時也能夠對接外部儲存資料的系統和管理體系。而最直接存取外部資料的功能是外部表格。
定義與原理
通過DDL語句定義MaxCompute訪問外部資料的表名、schema、表屬性、許可權、位置和協議等資訊,記錄在MaxCompute中繼資料中。
SQL就可以按照外部表格的中繼資料資訊,根據不同的外部表格式採用對應的方法建立與外部資料源的聯絡,包括擷取或更新外部資料的元資訊,提供各種資料的讀取、計算和寫出能力。
主要應用情境
基於外部表格,可以實現直接計算MaxCompute外部的資料,也可以在MaxCompute的管理範圍管理外部資料源,並在約定的管理體系下使用資料。例如:湖上結構化或非結構化資料批處理、資料共用交換及即時數倉資料歸檔入數倉模型等
計費說明
儲存費用
結論:不產生任何儲存費用。
原因:用外部表格功能時,外部表格的資料不會複製後儲存在MaxCompute,外部表格的資料存放區於外部系統,MaxCompute不收取數倉側的儲存費用,儲存成本請關注資料來源自身的計費規則。
計算費用
計算費用遵循MaxCompute的計算資源計費規則,具體分為以下幾種模式:對於訂用帳戶或彈性預留CU資源:
外部表格的計算費用已包含在預付費的計算資源費用中。
對於隨用隨付模式:
計費部分:目前僅統計計算任務訪問OSS和OTS的掃描資料量。
暫不計費部分:訪問 HDFS、Hologres、RDS、HBase、Lindorm 等(無論是通過外部表格還是湖倉一體2.0的外部Schema方式),暫時不統計掃描資料量,也暫不產生計算費用。
網路費用
當使用公網MaxCompute Endpoint串連外部表格時,會產生公網流量費和下載費用。MaxCompute費用詳情請參見計費項目與計費方式。
外部資料源側費用提醒
使用MaxCompute外部表格訪問外部資料源時,外部資料源可能會產生計算、訪問、資料轉送等費用,具體以外部資料源計費方式為準,請關注相應產品的說明。
適用範圍
Tunnel功能及Tunnel SDK當前不支援外部表格操作。可以通過Tunnel直接上傳資料到MaxCompute內部表,或者是通過OSS Python SDK上傳到OSS後,在MaxCompute使用外部表格做映射。
MaxCompute的外部表格支援寫出資料到資料來源的能力,寫出能力和一致性受外部系統的限制。例如:
Hologres:MaxCompute基於JDBC協議訪問Hologres元資訊,不能保證寫出事務控制的原子性;MaxCompute SQL引擎對Hologres底層pangu資料只有直讀並無直寫能力;MaxCompute的分散式運算多進程並行寫的複雜性,上述原因導致MaxCompute對Hologres寫出資料不支援
INSERT OVERWRITE語義,且作業運行失敗的情況下可能會唯寫出部分資料。HDFS:同樣基於HMS,HDFS的寫出也有較小機率不滿足一致性。
OSS:OSS外部表格寫出時,通過.odps元資訊檔控制可以降低不完整的機率。但如果為了引擎相容性放棄使用.odps元資訊檔控制機制,寫出情境也有較小機率不完整。
MaxCompute對外部資料的寫出能力如果使用
INSERT OVERWRITE語義,會先寫出資料,資料ddl commit階段會刪除表/分區已有資料,再替換為新寫出資料。被刪除資料MaxCompute無法復原恢複,請提前做好備份,並建議寫出後執行資料校正,如有問題可以重複執行完整寫出。
相關文檔
支援外部表格
MaxCompute支援OSS、Hologres及RDS等多種外部表格:
外部表格樣本
通過以下樣本,深入瞭解通過MaxCompute外部表格功能處理各種非結構化資料的方法: