1. 程式人生 > 其它 >spark DataFrame&DataSet 註冊臨時表

spark DataFrame&DataSet 註冊臨時表

將 DataFrame&DataSet 註冊成為臨時表,然後通過 SQL 語句進行查詢 

createOrReplaceTempView createTempView 建立臨時檢視,此檢視的生命週期與用於建立此資料集的 SparkSession 相關聯 

createOrReplaceGlobalTempView createGlobalTempView 建立全域性臨時檢視,此時圖的生命週期與 Spark Application 繫結。

dropTempView dropGlobalTempView 刪除檢視

一、建立臨時檢視 createorreplacetempView

package
org.hnsw import org.apache.spark.sql.SparkSession //樣本類 三個欄位 userid(使用者id)、artistid(藝術家ID)、playcount(播放次數) case class UserArtist(userid:String, attiscleid:String, playcount:Int) object SparkLearn { def main(args: Array[String]): Unit = { val session = SparkSession.builder().appName("jxq").master("local[*]").getOrCreate()
//1、以rdd的方式讀取文字 val user_artist_dataRddjxq = session.sparkContext.textFile("file:///F:\\user_artist_data.txt") //2.對映欄位名 和 欄位值 val artRdd = user_artist_dataRddjxq.map((x)=>{ val re = x.split(" ") UserArtist(re(0), re(1), re(2).trim.toInt) }) //使用隱式函式,toDs import session.implicits._ val ds
= artRdd.toDS() //4、建立一個檢視 createorreplacetempView ds.createOrReplaceTempView("user_artist_jxq") //5、使用sql查詢語句 session.sql("select * from user_artist_jxq").show() //6、釋放sesion和視圖表 session.close() } }

效果演示

二、建立全域性臨時檢視 createGlobalTempView

全域性表自動在 global_temp 庫下建立,訪問需要指定庫名

package org.hnsw

import org.apache.spark.sql.SparkSession

object SparkGloabalLearn {
  def main(args: Array[String]): Unit = {
    val session = SparkSession.builder().appName("jxq").master("local[*]").getOrCreate()
    //1、以rdd的方式讀取文字
    val user_artist_dataRddjxq = session.sparkContext.textFile("file:///F:\\user_artist_data.txt")
    //2.對映欄位名 和 欄位值
    val artRdd = user_artist_dataRddjxq.map((x)=>{
      val re = x.split(" ")
      UserArtist(re(0), re(1), re(2).trim.toInt)
    })
    //使用隱寺函式,toDs
    import session.implicits._
    val ds = artRdd.toDS()
    //4、建立一個檢視 createGlobalTempView全域性
    ds.createGlobalTempView("global_user_artist_jxq")
    //5、使用sql查詢語句
    session.sql("select * from global_temp.global_user_artist_jxq").show()
    //6、釋放sesion和視圖表
    session.close()
  }

}

效果演示