Spark之【SparkSQL编程】系列(No4)——《IDEA创建SparkSQL程序》

举报
大数据梦想家 发表于 2021/09/28 00:37:50 2021/09/28
【摘要】         在之前的博客SparkSQL系列中,已经大致为大家介绍了DataFrame,DataSet的概念以及它们之间...

        在之前的博客SparkSQL系列中,已经大致为大家介绍了DataFrame,DataSet的概念以及它们之间与RDD之间的互转的操作描述。本篇博客,为大家带来的是关于如何在IDEA上创建SparkSQL程序,并实现数据查询与(DataFrame,DataSet,RDD)互相转换的功能!

在这里插入图片描述


IDEA中创建SparkSQL程序

        IDEA中程序的打包和运行方式都和SparkCore类似。首先Maven依赖中需要添加新的依赖项:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.1.1</version>
</dependency>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

准备数据源people.json
在这里插入图片描述

{"name":"Michael"}
{"name":"Andy", "age":30}
{"name":"Justin", "age":19}

  
 
  • 1
  • 2
  • 3

<1>数据查询

object SparkSQL01_Demo {

  def main(args: Array[String]): Unit = {

    // 创建配置对象
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("SparkSQL01_Demo")

    // 创建 SparkSQL的环境变量
    // SparkConf()
    val spark = SparkSession
      .builder()
      .config(sparkConf)
      .getOrCreate()

    // 导入隐式转换
    import spark.implicits._

    val df = spark.read.json("in/people.json")

    // 查询所有数据
    df.show()

    // 过滤器查询
    df.filter($"age">21).show()

    // 创建临时表
    df.createOrReplaceTempView("persons")

    // Sparksql 查询
    spark.sql("SELECT * FROM persons where age > 21").show()
    
    // 释放资源
    spark.stop()

  }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

<2>类型转化

object SparkSQL02_SQL {

  def main(args: Array[String]): Unit = {

    // 创建配置对象
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("SparkSQL01_Demo")

    // 创建 SparkSQL的环境变量
    // SparkSession()
    val spark:SparkSession = SparkSession
      .builder()
      .config(sparkConf)
      .getOrCreate()


    // 导入隐式转换
    // 这里的spark不是包名的含义,是SparkSession对象的名字
    import spark.implicits._


    // 创建RDD
  val rdd: RDD[(Int, String, Int)] = spark.sparkContext.makeRDD(List((1,"zhangsan",20),(2,"lisi",30),(3,"wangwu",40)))


    // 转换为DF,需给出结构
    val df: DataFrame = rdd.toDF("id","name","age")

    // 转换为DS,需给出类型
    val ds: Dataset[User] = df.as[User]

    // 转换为DF
    val df1: DataFrame = ds.toDF()

    // 转换为RDD
    val rdd1: RDD[Row] = df1.rdd

    //访问
    rdd1.foreach(row=>{
      // 获取数据时,可以通过索引访问数据
      println(row.getInt(0))
    })


    // 释放资源
    spark.stop()

  }

  // 定义一个样例类
  case class User(id:Int,name:String,age:Int)
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

        本次的分享就到这里,受益或感兴趣的朋友记得点个赞支持一下~
        
        
在这里插入图片描述

文章来源: alice.blog.csdn.net,作者:大数据梦想家,版权归原作者所有,如需转载,请联系作者。

原文链接:alice.blog.csdn.net/article/details/104711778

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。