zoukankan      html  css  js  c++  java
  • 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支持序列化
      })

  • 相关阅读:
    Django 同步数据库的时候app中的models的表没有成功创建
    mysql 个人博客应用的建表和相关查询
    lambda(),map(),filter()
    用小白鼠找毒药
    python 汉诺塔问题
    灰色预测
    python可视化图标
    exel数据可视化
    543. 二叉树的直径
    236. 二叉树的最近公共祖先
  • 原文地址:https://www.cnblogs.com/juncaoit/p/6762450.html
Copyright © 2011-2022 走看看