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

  • 相关阅读:
    基于python批量获取Url
    记一次tp5.0.11rce
    centOS 6.2 x64系统上安装 oracle 11g R2 x64
    用xmanager连接Linux的配置步骤
    0级备份和全备
    配置EM遇到的问题
    转:如何迁移oracle 队列表
    oracle audit
    VIEWS for Oracle object privileges
    Oracle 脚本
  • 原文地址:https://www.cnblogs.com/juncaoit/p/6762450.html
Copyright © 2011-2022 走看看