SparkSQL中的兩種Optimizer_Catalyst與Tungsten記憶體優化
https://www.learntospark.com/2020/02/spark-sql-catalyst-optimizer.html Spark SQL 支援 基於規則 和 基於成本 的查詢優化。(以下先名詞解說這兩個定義差異) Rule-Based Optimization 代表著 How to run the SQL query (比方:一個表是否有使用到Index、檢查一個查詢是否僅包含所需的欄位。) Cost-Based Optimization 代表著 當一個query執行時所需耗費多少時間跟memory。 (例如:基於查詢消耗的時間和記憶體來衡量和計算成本。) https://www.slideshare.net/slideshow/deep-dive-into-catalyst-apache-spark-20s-optimizer-63071120/63071120#14 Catalyst 也稱為 Catalyst Optimizer,是 Spark SQL 內置的基於規則的查詢優化器。 基於 Scala 函數式編程構造。 Catalyst 優化器選擇會以最低耗時和記憶體消耗較少的查詢路徑評估。 開發人員可以通過添加數據源特定的規則和支持新數據類型來擴展優化器。 Catalyst Optimizer 背後使用一種樹狀數據結構並提供數據樹規則集。 在基於規則的優化期間,SQL 優化器遵循預定義的規則,確定如何運行 SQL 查詢。 Catalyst 執行以下四個高階任務或階段: 分析、邏輯優化、物理規劃和代碼生成。(Analysis, logistical optimization, physical planning, and code generation) Catalyst 將 SQL 查詢轉換為抽象語法樹,以便進一步優化 Apache Spark Catalyst SQL 優化器中的示例樹 https://bigdataschool.ru/blog/spark-sql-catalyst-ast-query-plans.html https://blog.csdn.net/Full_Stack_delp/article/details/72877892 Tungsten 優化了基礎硬件的性能,著重於 CPU 性能而非 I...