色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Spark臨時表tempView的注冊/使用/注銷/注意事項(推薦)

瀏覽:27日期:2023-03-06 14:25:34
目錄
  • createTempView運作原理
  • 低效做法
  • 緩存臨時表方式:
    • 方式1 創建
    • 方式2
    • 方式3
  • 臨時表生命周期

    createTempView運作原理

    先說一個眾人皆知的知識:
    Spark中的算子包含transformation算子和action算子,transformation是根據原有RDD創建一個新的RDD,而action則把RDD操作后的結果返回給driver。Spark對transformation的抽象可以大大提高性能,這是因為在Spark中,所有transformation操作都是lazy模式,即Spark不會立即計算結果,而只是簡單地記住所有對數據集的轉換操作邏輯。這些轉換只有遇到action操作的時候才會開始計算。這樣的設計使得Spark更加高效。

    低效做法

    sql("select a,b from table where xxx").createTempView("view1")
    sql("select a from view1 where xxx").show()
    sql("select b from view1 where xxx").show()

    使用createTempView后,查詢這個視圖每次都很耗時了,正是因為createTempView操作是lazy模式,在沒有action算子觸發之前,它并沒有什么實質性的運作,僅僅記錄了一個創建視圖的邏輯
    Spark每次遇到action算子show()方法的時候,才開始真正計算,上面代碼中兩次用到視圖view1,那么意味著創建視圖的方法會執行兩次,因此非常的耗時,所以需要對view1進行緩存處理

    緩存臨時表方式:

    方式1 創建

    // 創建它的SparkSession對象終止前有效
    df.createOrReplaceTempView("tempViewName")  
    // spark應用程序終止前有效
    df.createOrReplaceGlobalTempView("tempViewName") 

    注銷

    spark.catalog.dropTempView("tempViewName")
    spark.catalog.dropGlobalTempView("tempViewName")

    方式2

    創建

    session.table("tempViewName").cache()

    注銷

    session.table("tempViewName").unpersist()

    方式3

    創建

    commonDF.cahe() 或 commonDF.persist(StorageLevel.MEMORY_AND_DISK)
    commonDF.createOrReplaceTempView("tempViewName")

    注銷

    commonDF.unpersist()

    臨時表生命周期

    源碼

    createOrReplaceTempView

      /**
       * 使用給定名稱創建本地臨時視圖。此臨時視圖的生命周期與用于創建此數據集的 SparkSession 相關聯。
       *
       * @group basic
       * @since 2.0.0
       */
      def createOrReplaceTempView(viewName: String): Unit = withPlan {
        createTempViewCommand(viewName, replace = true, global = false)
      }
    

    也就是說,當一下代碼中spark stop(),之后 創建的臨時視圖表才失效

    createGlobalTempView

    /**
       * 使用給定名稱創建一個全局臨時視圖。此臨時視圖的生命周期與此 Spark 應用程序相關聯。全局臨時視圖是跨會話的。它的生命周期是 Spark 應用程序的生命周期,即當應用程序終止時它會被自動刪除。它與系統保留的數據庫 global_temp 相關聯,我們必須使用限定名稱來引用全局臨時視圖,例如從 global_temp.view1 中選擇。
       *
       * @throws AnalysisException if the view name is invalid or already exists
       *
       * @group basic
       * @since 2.1.0
       */
      @throws[AnalysisException]
      def createGlobalTempView(viewName: String): Unit = withPlan {
        createTempViewCommand(viewName, replace = false, global = true)
      }

    到此這篇關于Spark臨時表tempView的注冊/使用/注銷/注意事項的文章就介紹到這了,更多相關Spark臨時表tempView內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

    標簽: MsSQL
    主站蜘蛛池模板: 成在线人视频免费视频 | 欧美成人鲁丝片在线观看 | 韩日一区二区 | 国产在线观看一区二区三区四区 | 一区三区三区不卡 | 欧洲一级鲁丝片免费 | 亚洲美女精品视频 | 国产精品人成人免费国产 | 九九精品视频在线观看九九 | 国内精品伊人久久 | 一区二区三区不卡在线 | 欧美67194| 9l国产精品久久久久麻豆 | 午夜视频在线观看一区二区 | 免费国产黄网站在线观看视频 | 2022麻豆福利午夜久久 | 宅女福利视频在线看免费网站 | 久久99精品视频在线在线观看 | 性午夜| 国产三a级日本三级日产三级 | 亚洲在线小视频 | 免费看特级毛片 | 久操免费在线视频 | 精品久久久久久国产免费了 | 免费人成黄页网站在线观看 | 中文字幕国产一区 | 国产杨幂福利在线视频观看 | 男人扒开腿躁女人j | 久久精品国产在爱久久 | 一区二区三区四区在线播放 | 亚洲欧美在线观看播放 | 成人国产精品免费视频不卡 | 国产播放 | a一级爱做片免费 | 国内精品久久久久影院老司 | 久久香蕉国产线看免费 | 中文字幕一区二区三区精品 | 国产欧美日韩在线一区二区不卡 | 奇米色88欧美一区二区 | 中文字幕一区二区三区亚洲精品 | 成人毛片免费网站 |