spark DataFrame&DataSet 註冊臨時表
阿新 • • 發佈:2022-05-10
將 DataFrame&DataSet 註冊成為臨時表,然後通過 SQL 語句進行查詢
createOrReplaceTempView createTempView 建立臨時檢視,此檢視的生命週期與用於建立此資料集的 SparkSession 相關聯
createOrReplaceGlobalTempView createGlobalTempView 建立全域性臨時檢視,此時圖的生命週期與 Spark Application 繫結。
dropTempView dropGlobalTempView 刪除檢視
一、建立臨時檢視 createorreplacetempView
packageorg.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() } }