SparkSQL练习+理解+详解

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)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值