def main(args: Array[String]): Unit = {
//创建配置对象
val conf = new SparkConf().setAppName("SparkSQL01_demo").setMaster("local[*]")
val session = SparkSession.builder().config(conf).getOrCreate()
//创建RDD (session里包含sparkContext,因为DF底层包含RDD)
val rdd1 = session.sparkContext.makeRDD(List(("chun",21),("chun1",23),("chun3",22)))
//这里RDD转换DF/DS需要引入隐式转换(注意:Scala的import可以写在函数内部,session是sparksession对象)
import session.implicits._
//RDD转换 成DF
val df = rdd1.toDF("name","age")
//创建全局临时视图
df.createGlobalTempView("people")
//sql语句
session.sql("select * from global_temp.people").show
//创建一个新的session看能不能使用当前视图
session.newSession().sql("select name from global_temp.people").show()
df.printSchema()
df.select("age").show() //用方法的方式来代替sql
df.select($"age"+1).show()//想查询年龄后加1,用$来引用当前数据,要不然是字符串拼接查询的是age1这个字段,会报错
df.filter($"age">22).show()
//DF转化成DS 先创建样例类
val ds:Dataset[User] = df.as[User]
ds.select("*").show()
ds.printSchema()
//RDD直接转换成DS(用样例类)
//val ds = rdd1.toDS()
//session.stop()
}
//样例类在DF结构基础上加上属性
case class User(name:String,age:Int)
SparkSQL练习+理解+详解
最新推荐文章于 2024-03-15 15:35:18 发布