亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spark臨時(shí)表tempView的注冊(cè)/使用/注銷/注意事項(xiàng)(推薦)

瀏覽:22日期:2023-03-06 14:25:34
目錄
  • createTempView運(yùn)作原理
  • 低效做法
  • 緩存臨時(shí)表方式:
    • 方式1 創(chuàng)建
    • 方式2
    • 方式3
  • 臨時(shí)表生命周期

    createTempView運(yùn)作原理

    先說(shuō)一個(gè)眾人皆知的知識(shí):
    Spark中的算子包含transformation算子和action算子,transformation是根據(jù)原有RDD創(chuàng)建一個(gè)新的RDD,而action則把RDD操作后的結(jié)果返回給driver。Spark對(duì)transformation的抽象可以大大提高性能,這是因?yàn)樵赟park中,所有transformation操作都是lazy模式,即Spark不會(huì)立即計(jì)算結(jié)果,而只是簡(jiǎn)單地記住所有對(duì)數(shù)據(jù)集的轉(zhuǎn)換操作邏輯。這些轉(zhuǎn)換只有遇到action操作的時(shí)候才會(huì)開始計(jì)算。這樣的設(shè)計(jì)使得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后,查詢這個(gè)視圖每次都很耗時(shí)了,正是因?yàn)閏reateTempView操作是lazy模式,在沒(méi)有action算子觸發(fā)之前,它并沒(méi)有什么實(shí)質(zhì)性的運(yùn)作,僅僅記錄了一個(gè)創(chuàng)建視圖的邏輯
    Spark每次遇到action算子show()方法的時(shí)候,才開始真正計(jì)算,上面代碼中兩次用到視圖view1,那么意味著創(chuàng)建視圖的方法會(huì)執(zhí)行兩次,因此非常的耗時(shí),所以需要對(duì)view1進(jìn)行緩存處理。

    緩存臨時(shí)表方式:

    方式1 創(chuàng)建

    // 創(chuàng)建它的SparkSession對(duì)象終止前有效
    df.createOrReplaceTempView("tempViewName")  
    // spark應(yīng)用程序終止前有效
    df.createOrReplaceGlobalTempView("tempViewName") 

    注銷

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

    方式2

    創(chuàng)建

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

    注銷

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

    方式3

    創(chuàng)建

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

    注銷

    commonDF.unpersist()

    臨時(shí)表生命周期

    源碼

    createOrReplaceTempView

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

    也就是說(shuō),當(dāng)一下代碼中spark stop(),之后 創(chuàng)建的臨時(shí)視圖表才失效

    createGlobalTempView

    /**
       * 使用給定名稱創(chuàng)建一個(gè)全局臨時(shí)視圖。此臨時(shí)視圖的生命周期與此 Spark 應(yīng)用程序相關(guān)聯(lián)。全局臨時(shí)視圖是跨會(huì)話的。它的生命周期是 Spark 應(yīng)用程序的生命周期,即當(dāng)應(yīng)用程序終止時(shí)它會(huì)被自動(dòng)刪除。它與系統(tǒng)保留的數(shù)據(jù)庫(kù) global_temp 相關(guān)聯(lián),我們必須使用限定名稱來(lái)引用全局臨時(shí)視圖,例如從 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)
      }

    到此這篇關(guān)于Spark臨時(shí)表tempView的注冊(cè)/使用/注銷/注意事項(xiàng)的文章就介紹到這了,更多相關(guān)Spark臨時(shí)表tempView內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

    標(biāo)簽: MsSQL
    主站蜘蛛池模板: 国内外成人在线视频 | 尤物视频在线网站 | 久久亚洲精品无码观看不卡 | 一级毛片免费 | 亚洲国产综合精品中文第一区 | 国产精品福利在线观看 | 国产日韩不卡免费精品视频 | 一区二区三区免费在线观看 | 日韩欧美在线一区二区三区 | 色天天综合网色鬼综合 | 国产丰满主播丝袜勾搭秀 | 色婷婷狠狠干 | 成年网站视频在线观看 | 久久91精品国产91久久小草 | 欧美日韩国产一区二区三区播放 | 狠狠色综合久久丁香婷婷 | 日韩毛片免费视频 | 真人毛片免费全部播放完整 | 亚洲欧洲日韩天堂无吗 | 永久免费精品视频 | 久久国产精品成人免费 | 国产成人啪精品视频免费网站软件 | 久久亚洲精品中文字幕二区 | 91精品国产三级在线观看 | 欧美精品亚洲精品日韩1818 | a一级黄 | 911国产视频 | 亚州黄色网址 | 黄色www.| 午夜精品aaa国产福利 | 手机看片久久高清国产日韩 | 国产一级片在线 | 久久精品成人国产午夜 | 国产精品视频白浆免费视频 | 91精品视频免费在线观看 | 中文字幕在线观 | 亚洲第一区精品日韩在线播放 | 91久久色 | 91亚洲一区二区在线观看不卡 | 亚洲精品乱码电影在线观看 | 一级真人毛片 |