背景介紹
阿裡雲資料湖分析(DLA)産品提供一站式的資料湖分析與計算服務。DLA Presto可以實作高效的線上分析,主要面向使用者探索式分析、報表以及輕量ETL的場景,支援OSS、RDS、AnalyticsDB、MaxCompute、TableStore、ElasticSearch等多種資料源。
DLA Presto的獨享的虛拟叢集中,當Query的資料量比較大,容易報記憶體超過限制的錯誤。但許多時候,使用者某些Query是ETL類型的任務,它可以容忍慢一些,但不能失敗。對于這種情況,DLA Presto獨享版推出大查詢功能,能讓相同規格的虛拟叢集,分析的資料量提升十倍。
新功能介紹
使用場景
當運作在DLA Presto中Query處理的資料量比較大,容易出現類似如下的報錯資訊。
Query exceeded per-node user memory limit...
出現此異常一般是因為某一節點處理的資料量過大,超出了單節點對記憶體的限制。這種情況下,你可以先排除你處理的資料是否有資料傾斜或SQL是否寫得合理,如果确定資料沒有傾斜且SQL寫得是合理的,那可以考慮使用DLA Presto的big_query功能。
使用方法
開啟的方法很簡單,隻需要在查詢前加一個hint
/*+big_query=true*/ insert into table1 SELECT * FROM table2;
注意事項:
(1)big_query功能隻在獨享虛拟叢集中支援,public(掃描量)叢集中不支援該功能。
(2)它可能會增加你的Query運作耗時。
(3)它并不能讓你處理任意大小的資料和任意複雜SQL,可以參考的資料量是64Core規格可執行10T的TPCH查詢。
(4)目前的Schema的Catalog類型必須是Hive,否則會報如下的錯誤:
big_query only support hive catalog ...
大查詢的原理
DLA Presto大查詢的功能基于Presto的Exchange物化和GroupExecution功能,開啟該功能後,不再一次性把所有子任務排程起來執行,而是通過把中間資料落到預先分好區的表中,GroupedExecution允許同時隻有一部分資料集做處理,能大大減小查詢占用的記憶體,使得64Core規格的DLA Presto虛拟叢集能處理的查詢資料量由1T增加到10T。
使用DLA Presto的優勢
DLA Presto(相容Presto)的目标是提供比開源自建更高的成本效益、開箱即用的體驗、友善的資料攝入、MySQL生态帶來的簡單易用、内置各種優化的資料湖分析計算服務。使用者可以先通過使用Serverless版本低成本試用,然後根據使用頻率的高低、對資源是否有強獨占的需求來決定生産環境使用Serverless版本還是CU版本。DLA SQL還在不斷發展中,目前規劃中的一些特性包含:
- 按照時間段或者工作負載進行自動擴縮容,幫助使用者節省成本。
- 支援檔案緩存機制,提升查詢性能
- 内置大資料最佳實踐,自動攔截Bad SQL
歡迎大家關注我們的釘釘群擷取最新的資訊:
分享: