036 SQLContext和HiveContext


1.SqlContext 

 SQLContext依賴SparkContext
    功能:支持SparkSQL操作(不依賴Hive)
    SQLContext在一個JVM中默認允許存在多個

    只有SQLContext支持序列化與反序列化。

 

2.HiveContext

  繼承了SQLContext
  HiveContext是SparkSQL讀取Hive表數據的入口

  繼承自SQLContext,重寫了一些方法。

  

  發現sqlContext的類型是HiveContext,所以以前的示例可以直接進行操作hive。

 

3.SparkSQL

  SparkCore
    入口:SparkContext
    核心抽象:RDD
  SparkSQL
    入口:SQLContext
    核心抽象:DataFrame

 

4.SparkSQL底層優化

  兩張表進行join: 對於表數據小於參數spark.sql.autoBroadcastJoinThreshold(10485760)設置值的時候,將數據廣播變量

 

5.補充

  rdd.foreachPartition(iter => {
    // 如果在這里創建一個SQLContext的話,相當於每個分區都創建一個SQLContext===>可能導致OOM異常(Perm Space)
    // 解決方案:直接在driver中創建一個SQLContext對象,然后直接在各個分區中使用 --> SQLContext支持序列化
  })


免責聲明!

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



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