發表文章

目前顯示的是有「SparkSQL」標籤的文章

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

實作PySpark與Pandas程式的數據分析_Spark DataFrame與SparkSQL常見操作

圖片
  findspark :用於定位 Spark 安裝。 pandas :被導入以進行數據處理。 SparkSession對於使用PySpark至關重要。它允許創建DataFrame、加載數據和進行各種操作。 初始化具有指定應用程式名稱的 Spark Session。 SparkSession.builder.appName("COVID-19 Data Analysis").getOrCreate() 第一階段.檢測Spark Session是否成功啟動 import findspark # This helps us find and use Apache Spark findspark.init() # Initialize findspark to locate Spark from pyspark.sql import SparkSession from pyspark.sql.types import StructType, StructField, StringType, IntegerType, LongType, DateType import pandas as pd # Initialize a Spark Session spark = SparkSession \ .builder \ .appName( "COVID-19 Data Analysis" ) \ .config( "spark.sql.execution.arrow.pyspark.enabled" , "true" ) \ .getOrCreate() # Check if the Spark Session is active if 'spark' in locals () and isinstance (spark, SparkSession): print ( "SparkSession is active and ready to use." ) else : print ( "SparkSession is not active. Plea...

Apache Spark筆記03_Dataframes跟SparkSQL介紹及常見操作

圖片
  https://rharshad.com/spark-sql-dataframes-datasets/#dataframes 捨麼是SparkSQL? Spark SQL 是一個用於結構化數據處理的 Spark 模組。 用於在 Spark DataFrames 上運行 SQL 查詢,並提供 Java、 Scala、Python 和 R 的 API。  可以使用 SQL 查詢和透過DataFrame API 與 Spark SQL 交互。 有別於Spark RDD API,Spark SQL 包括基於成本的優化器(cost-based optimizer)、欄位式儲存(columnar storage)和代碼生成(code generation)。為 Spark 提供有關數據結構以及正在進行計算的優化。 Spark SQL 支持臨時和全局臨時表格視圖。 (臨時視圖具有局部作用域。 局部作用域意味著視圖僅在當前 Spark 會話中的當前節點內存在。然而,全局臨時視圖存在於一般的 Spark 應用程序中。全局臨時視圖可以在不同的 Spark 會話間共享。) SparkSQL支持的資料來源格式: Parquet:是許多數據處理系統支持的列式格式。 JSON 數據:可以通過推斷模式加載和寫入 JSON 數據。 Hive 中的表數據:支持讀取和寫入存儲在 Hive 中的數據。 Spark-SQL-Optimization https://medium.com/bryanyang0528/%E7%B0%A1%E5%96%AE%E4%BB%8B%E7%B4%B9-sparksql-77dd47c80bc1 https://www.databricks.com/blog/2016/07/14/a-tale-of-three-apache-spark-apis-rdds-dataframes-and-datasets.html 使用SparkSQL的好處? Spark SQL 支援 Java、Scala、Python 和 R這類程式語言的API。 Spark SQL 使用相同的執行引擎來計算結果,與用於計算的 API 或語言無關。開發人員可以使用提供最自然方式來表示給定轉換的 API。 什麼是 DataFrame? DataFrame 是組織到命名欄位(named...