Spark Core、Spark Sql、Spark Streaming 聯系與區別


   sparkcore是做離線批處理

   sparksql 是做sql高級查詢

   sparkshell 是做交互式查詢

   sparkstreaming是做流式處理

區別: 

Spark Core :

        Spark的基礎,底層的最小數據單位是:RDD ; 主要是處理一些離線(可以通過結合Spark Streaming來處理實時的數據流)、非格式化數據。它與Hadoop的MapReduce的區別就是,spark core基於內存計算,在速度方面有優勢,尤其是機器學習的迭代過程。

Spark SQL:

         Spark SQL 底層的數據處理單位是:DataFrame(新版本為DataSet<Row>) ; 主要是通過執行標准 SQL 來處理一些離線(可以通過結合Spark Streaming來處理實時的數據流)、格式化數據。就是Spark生態系統中一個開源的數據倉庫組件,可以認為是Hive在Spark的實現,用來存儲歷史數據,做OLAP、日志分析、數據挖掘、機器學習等等

Spark Streaming:

         Spark Streaming底層的數據處理單位是:DStream ; 主要是處理流式數據(數據一直不停的在向Spark程序發送),這里可以結合 Spark Core 和 Spark SQL 來處理數據,如果來源數據是非結構化的數據,那么我們這里就可以結合 Spark Core 來處理,如果數據為結構化的數據,那么我們這里就可以結合Spark SQL 來進行處理。

聯系:

Spark SQL構建在Spark Core之上,專門用來處理結構化數據(不僅僅是SQL)。即Spark SQL是Spark Core封裝而來的!
  Spark SQL在Spark Core的基礎上針對結構化數據處理進行很多優化和改進,
  簡單來講:
    Spark SQL 支持很多種結構化數據源,可以讓你跳過復雜的讀取過程,輕松從各種數據源中讀取數據。
    當你使用SQL查詢這些數據源中的數據並且只用到了一部分字段時,SparkSQL可以智能地只掃描這些用到的字段,而不是像SparkContext.hadoopFile中那樣簡單粗暴地掃描全部數據。

可見,Spark Core與Spark SQL的數據結構是不一樣的!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM