小工具知识网

当前位置: 首页 > 行业知识 > Spark SQL的使用

行业知识

Spark SQL的使用

2026-11-07 15:11:09 来源:互联网转载

目录

一、Spark SQL

1、spark sql的特点

2、spark sql概述

3、SparkSQL核心编程

新的起点

DataFrame

二、部分sql语句的使用

1、where语句

 2、case语句

 3、rlike方法

4、select方法

 三、Spark SQL 读取MySQL数据库

1、在Centos7安装MySQL5.7

2、写一个sql文件,导入到MySQL数据库中

2、写一个Spark SQL程序读取表 

 3、程序运行可能出现的错误


一、Spark SQL

1、spark sql的特点

  • 引入SchemaRDD,使得RDD带有Schema模式信息。Spark1.3以后,SchemaRDD被DataFrame替换,DataFrame提供更多易于使用的API

  • 可以执行SQL语句

  • 支持多种数据源。RDD、Hive、HDFS、Cassandra等

  • 支持JSON、Parquet、CSV等格式数据

  • 支持Scala、Java、Python等语言

    2、spark sql概述

    Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和DataSet,并且作为分布式SQL查询引擎的作用。

    它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduc的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!

    3、SparkSQL核心编程

    • 新的起点

              SparkCore中,如果想要执行应用程序,首先需要构建上下文环境对象SparkContext。SparkSQL可以理解为是对SparkCore的封装。不仅是在模型上进行了封装,上下文环境对象也进行了封装。在老的版本中,SparkSQL提供了两种SQL查询起始点:一个叫SQLContext,用于Spark自己提供的SQL查询;一个叫HiveContext,用于连接Hive的查询。

              SparkSession是Spark最新的SQL查询起始点,实质上是SQLContext和HiveContext的组合,所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。Spark Session 内部封装了 SparkContext,所以计算实际上是由 sparkContext 完成的。当我们使用 spark-shell 的时候, spark 框架会自动的创建一个名称叫做 spark 的SparkSession 对 象, 就像我们以前可以自动获取到一个 sc 来表示 SparkContext 对象一样。

      • DataFrame

                在 Spark SQL 中 SparkSession 是创建 DataFrame 和执行 SQL 的入口,创建 DataFrame有三种方式:通过 Spark 的数据源进行创建;从一个存在的 RDD 进行转换;还可以从 Hive Table 进行查询返回。

        二、部分sql语句的使用

        1、where语句

        筛选星期二的数据

        public static void main(String[] args) {        SparkSession ss = SparkSession.builder()                //设置任务名称                .appName("app2")                .master("local")                .config("spark.driver.host", "localhost")                //设置master                .getOrCreate();        Dataset weather=ss.read().json("D:\spark\spark期末作业\weather.json");        //筛选出星期二的数据        Dataset whereRes =weather.where("week='星期二'");        whereRes.show();    }

         2、case语句

        将最高温度分为热、温度适中、温度偏冷、冷四个阶段,并统计其数据总量

        public static void main(String[] args) {        SparkSession ss = SparkSession.builder()                //设置任务名称                .appName("app1")                .master("local")                .config("spark.driver.host", "localhost")                //设置master                .getOrCreate();        Dataset srcRdd=ss.read().json("D:\spark\spark期末作业\weather.json");        Dataset time=srcRdd.selectExpr("*","case when max_temperature>30 then '热'"                + "when max_temperature>=20 and  max_temperature=10 and  max_temperature

上一篇:循环服务器应该怎么写?

下一篇:揭秘大鱼吃小鱼游戏源代码,深度解析游戏机制与实现过程