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支持序列化
  })

最新文章

  1. 用Kotlin语言重新编写Plaid APP:经验教训(II)
  2. nginx 页面乱码问题
  3. as3 同屏1000+动画,不掉帧。解决方案。
  4. long long 与 _int64
  5. oracle自定义job名字,job调度
  6. [AngularJS] Hijacking Existing HTML Attributes with Angular Directives
  7. Biba模型简介
  8. 利用 css 制作简单的提示框
  9. Python面向对象OOP
  10. Asp.Net Mvc使用Autofac实现依赖注入
  11. ●BZOJ 3894 文理分科
  12. axios 或 ajax 请求文件
  13. MDK编译过程
  14. Problem E: 用链表实现约瑟夫环
  15. LeetCode--067--二进制求和
  16. Flask 5 模板1
  17. Thymeleaf 标准表达式语法
  18. Java07
  19. linux c++ rabbitMq Demo
  20. mysqli_insert_id

热门文章

  1. bzoj1052
  2. HGOI20181029模拟题解
  3. GO内存管理
  4. 获取C++类成员虚函数地址
  5. C#列表所有IIS站点以及相关站点属性
  6. MySql数据库类型bit等与JAVA中的对应类型【布尔类型怎么存】
  7. MySQL-->高级-->001-->MySQL备份与恢复测试
  8. python数据分析美国大选项目实战(三)
  9. map文件的使用
  10. openstack项目【day23】:虚拟化介绍