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() } }