SparkSQL(1)

上节课回顾

(1)kafka的基本架构和核心概念?

(2)kafka为什么快?

(3)为什么kafka的吞吐量比较高?

(4)同一个消息能否被多个消费组消费?

(5)不同的组对topic消费,offset概念

1.基本概念

(1)定义:Spark SQL is a Spark module for structured data processing.(它是结构化数据处理的spark模块)

(2)去IOE:阿里提出的概念,本意是在阿里的IT架构中去掉IBM小型机,Orcale数据库,EMC存储设备

(3)使用SQL的前提:schema(数据库对象的集合一个用户,一般对应一个schema 该用户的schema名等于用户名,在HIVE中就是表的结构)+ file(作用的文件)

2.SQL on Hadoop

(1)定义:就是SQL语句在Hadoop上执行

(2)HIVE:有点稳定性好,开源免费,缺点就是跑的慢。

(3)Impala:和HIVE共享metastore,速度快了,但非常吃内存,用CM安装,手动安装什么吃力。

(4)shark:Spark1.0之前的,底层就是Hive,跑在Spark上,用起来较为麻烦。

(5)Dril:schemafree,无关schema,可连接的东西很多,用起来较为方便。

(6)Phoenix:因为Hbase不支持SQL查询,之后shell或者api,但俩个都比较费劲,所以phoenix就是基于Hbase上的一个SQL引擎。

(7)Spark SQL:这是Spark里面嵌套了SQL。

(8)Hive on Sprk:这是在Hive里的,Spark做为执行引擎,底层是mapreduce,2.x之后是Tez,Spark SQL支持的东西比Hive on Spark要少,因为Hive出来的比较早。

3.Spark SQL优点

(1)Seamlessly mix SQL queries with Spark programs(能无缝的将Spark和SQL连接起来)

(2)速度快,开源免费。

4.Spark SQL架构图

5.Spark操作Hive(环境搭建)

(1)将Hive的配置文件HIve-site.xml复制到spark的conf之下

(2)HIve操作SQL里面需要mysql驱动,Spark SQL则可以直接指定驱动文件

./spark-shell --master local[2] --jars /home/hadoop/software/mysqlqudong (记住一定要是jar包)

(3)./spark-sql --master local[2] --jars /sacaxxxx --driver-class-path /xjczxczxc   (这里有个坑,在sql启动的时候你的驱动,一定要在dirver这里也要加,但是shell不用)

(4)spark-sql中cache是eager的,不是core那样lazy的

(5)explain看SQL的执行计划

(6)SQL的优化,尽量先减少数据。大数据处理也是如此位次下压,无关的数据先干掉

6.IDEA与Spark SQL交互使用

(1)./start-thriftserver.sh --master local[2] --jars /home/hadoop/software/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar --driver-class-path /home/hadoop/software/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar

(2)./beeline -u jdbc:hive2://localhost:10000 -n hadoop

7.thriftserver和spark-sql或者spark-shell的区别?

(1)每次我们的shell或者sql启动都是一个application,每次启动都要重新申请资源,浪费资源但是thriftserver启动就之后就可一直放在那了。再工作中需要将他封装成一个作业,通过rest请求。。。。

import java.sql.DriverManager

/*
package SparkReview.SQL1

import java.sql.DriverManager

import com.mysql.jdbc.Driver

object SparkSQLClientApp {
  def main(args: Array[String]): Unit = {
    Class.forName("org.apache.hive.jdbc.HiveDriver")
    //Class.forName的作用,  因为在scala中的任何class或者object都是要装载在jvm虚拟机上用的
    //它就是起的这个作用返回一个类,  上面这行代码的就是返回HiveDriver类
    val conn=DriverManager.getConnection("jdbc:hive2://192.168.137.251:10000","hadoop","")
    val stmt=conn.prepareStatement("select * from dept")
    //由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。
    // 因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。所以不要使用Statement
    val rs=stmt.executeQuery() //执行这个PreparedStatement对象中的SQL语句,

    while (rs.next()){

      println(rs.getInt("deptno")+"  "+rs.getString("dname"))
    }
    rs.close()
    stmt.close()
    conn.close()

  }
}
*/
object SparkSQLClientApp{
  def main(args: Array[String]): Unit = {

    Class.forName("org.apache.hive.jdbc.HiveDriver")
    val cnon=DriverManager.getConnection("jdbc:hive2://192.168.137.251:10000","hadoop","")
    val stmt=cnon.prepareStatement("select * from dept")
    val rs=stmt.executeQuery()


    while (rs.next()){
      println(rs.getInt("deptno")+"  "+rs.getString("dname"))
//用JDBC从数据库中查询数据要用到结果集ResultSet,其中我们在获取结果的时候经常用到rs.next()方法来判断是否查询到了数据
    }

  }
}

8.作业

(1)使用自己的代码来启动thriftserver,这个代码就相当于提供一个微服务。然后客户端随便发一个请求过去,就可以把sql结果拿过来。在页面上自己展示

本项目是一个基于SSM(Spring+SpringMVC+MyBatis)后端框架与Vue.js前端框架开发的疫情居家办公系统。该系统旨在为居家办公的员工提供一个高效、便捷的工作环境,同时帮助企业更好地管理远程工作流程。项目包含了完整的数据库设计、前后端代码实现以及详细的文档说明,非常适合计算机相关专业的毕设学生和需要进行项目实战练习的Java学习者。 系统的核心功能包括用户管理、任务分配、进度跟踪、文件共享和在线沟通等。用户管理模块允许管理员创建和管理用户账户,分配不同的权限。任务分配模块使项目经理能够轻松地分配任务给团队成员,并设置截止日期。进度跟踪模块允许员工实时更新他们的工作状态,确保项目按计划进行。文件共享模块提供了一个安全的平台,让团队成员可以共享和协作处理文档。在线沟通模块则支持即时消息和视频会议,以增强团队之间的沟通效率。 技术栈方面,后端采用了Spring框架来管理业务逻辑,SpringMVC用于构建Web应用程序,MyBatis作为ORM框架简化数据库操作。前端则使用Vue.js来实现动态用户界面,搭配Vue Router进行页面导航,以及Vuex进行状态管理。数据库选用MySQL,确保数据的安全性和可靠性。 该项目不仅提供了一个完整的技术实现示例,还为开发者留下了扩展和改进的空间,可以根据实际需求添加新功能或优化现有功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值