前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark之【SparkSQL编程】系列(No4)——《IDEA创建SparkSQL程序》

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

作者头像
大数据梦想家
发布2021-01-27 11:01:11
5800
发布2021-01-27 11:01:11
举报
文章被收录于专栏:大数据成长之路

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

在这里插入图片描述
在这里插入图片描述

IDEA中创建SparkSQL程序

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

代码语言:javascript
复制
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.1.1</version>
</dependency>

准备数据源people.json

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
{"name":"Michael"}
{"name":"Andy", "age":30}
{"name":"Justin", "age":19}

<1>数据查询

代码语言:javascript
复制
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()

  }
}

<2>类型转化

代码语言:javascript
复制
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)
}

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IDEA中创建SparkSQL程序
    • <1>数据查询
      • <2>类型转化
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档