`

【赵强老师】什么是Spark SQL?

阅读更多

一、Spark SQL简介

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

为什么要学习Spark SQL?我们已经学习了Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!同时Spark SQL也支持从Hive中读取数据。

二、Spark SQL的特点

  • 无缝集成在Spark中,将SQL查询与Spark程序混合。Spark SQL允许您使用SQL或熟悉的DataFrame API在Spark程序中查询结构化数据。适用于Java、Scala、Python和R语言。
  • 提供统一的数据访问,以相同的方式连接到任何数据源。DataFrames和SQL提供了一种访问各种数据源的通用方法,包括Hive、Avro、Parquet、ORC、JSON和JDBC。您甚至可以通过这些源连接数据。
  • 支持Hive集成。在现有仓库上运行SQL或HiveQL查询。Spark SQL支持HiveQL语法以及Hive SerDes和udf,允许您访问现有的Hive仓库。
  • 支持标准的连接,通过JDBC或ODBC连接。服务器模式为业务智能工具提供了行业标准JDBC和ODBC连接。

三、核心概念:DataFrames和Datasets

  • DataFrame

DataFrame是组织成命名列的数据集。它在概念上等同于关系数据库中的表,但在底层具有更丰富的优化。DataFrames可以从各种来源构建,例如:

  • 结构化数据文件
  • hive中的表
  • 外部数据库或现有RDDs

DataFrame API支持的语言有Scala,Java,Python和R。

从上图可以看出,DataFrame多了数据的结构信息,即schema。RDD是分布式的 Java对象的集合。DataFrame是分布式的Row对象的集合。DataFrame除了提供了比RDD更丰富的算子以外,更重要的特点是提升执行效率、减少数据读取以及执行计划的优化。

  • Datasets

Dataset是数据的分布式集合。Dataset是在Spark 1.6中添加的一个新接口,是DataFrame之上更高一级的抽象。它提供了RDD的优点(强类型化,使用强大的lambda函数的能力)以及Spark SQL优化后的执行引擎的优点。一个Dataset 可以从JVM对象构造,然后使用函数转换(map, flatMap,filter等)去操作。 Dataset API 支持Scala和Java。 Python不支持Dataset API。

四、创建DataFrames

  • 测试数据如下:员工表

  • 定义case class(相当于表的结构:Schema)

 

case class Emp(empno:Int,ename:String,job:String,mgr:Int,hiredate:String,sal:Int,comm:Int,deptno:Int)

 

 

  • 将HDFS上的数据读入RDD,并将RDD与case Class关联

 

val lines = sc.textFile("hdfs://bigdata111:9000/input/emp.csv").map(_.split(","))

 

 

  • 把每个Array映射成一个Emp的对象

 

val emp = lines.map(x => Emp(x(0).toInt,x(1),x(2),x(3).toInt,x(4),x(5).toInt,x(6).toInt,x(7).toInt))

 

 

  • 生成DataFrame

 

val allEmpDF = emp.toDF

 

 

  • 通过DataFrames查询数据

  • 将DataFrame注册成表(视图)

 

allEmpDF.createOrReplaceTempView("emp")

 

 

  • 执行SQL查询
spark.sql("select * from emp").show

 

分享到:
评论

相关推荐

    传智播客 赵强 Oracle课件

    赵强老师在传智播客的Oracle课程是专为IT专业人士和对数据库技术感兴趣的学员设计的一系列教学资料,旨在深入浅出地讲解Oracle的核心概念、功能以及实际操作技巧。 在赵强老师的课程中,你可以学到以下几个重要的...

    赵强老师的Oracle课件

    想要好好地学习Oracle数据库的朋友呀,你错过了她就太不值得了。里面有好多的Oracle操作命令可能你都没接触过吧。好了,话不多多说。坚信资料不错!你,值得拥有!OK.还有,之所有要你2分打赏,是我给了你这么好的...

    精通JSP编程 作者赵强

    《精通JSP编程》是赵强先生的一部深入解析JSP技术的专业著作,该书针对JSP编程进行了全面且深入的讲解,旨在帮助读者掌握JSP的核心概念和技术,提升Web应用开发能力。根据提供的文件名列表,我们可以推测书籍的章节...

    精通JSP编程 作者赵强 编

    精通JSP编程 作者赵强 编 12-18节

    Oracle学习笔记(传智播客 赵强)

    在Oracle数据库的学习中,SQL优化是一项至关重要的技能,因为它直接影响到数据库的性能和查询效率。以下是一些关于SQL优化的关键知识点: 1. **使用列名代替通配符(*)**:在编写SQL查询时,避免使用`*`来获取所有列...

    Oracle数据库赵强视频教程【3天】

    教程名称:Oracle 数据库赵强视频教程【3天】教程目录:【】Oracle安装与管理、SQL语句(赵强)【】Orcale存储过程jdbc与Orcale大文本操作等(赵强)【】SQL简单查询触发器视图(赵强)  资源太大,传百度网盘了,链接在...

    [1120][赵强精通JSP编程][37M]

    根据提供的文件信息,我们可以推断出这是一份与Java Server Pages (JSP)相关的学习资料介绍,特别是关于赵强编写的《精通JSP编程》这本书的相关信息。下面将基于这个理解来生成相关知识点。 ### 一、JSP基础概念 ...

    Hadoop+Spark精选课程

    Oracle中国有限公司高级技术顾问赵强老师大数据Hadoop+Spark精选课程。Hadoop、Spark和Storm,每个人都认为他们正在做一些与这些新的大数据技术相关的事情,但它不需要很长的时间遇到相同的模式。具体的实施可能有所...

    二年级数学生活中的大数赵强PPT课件.pptx

    今天,我们将与赵强老师一同探索数学领域的一个重要主题——“生活中的大数”。这个主题通过生动的例子和清晰的逻辑,帮助孩子们在日常生活中感知和理解大数的存在及其重要性。 “生活中有大数”,这不仅是一句简单...

    oracle讲义

    6. PL/SQL概述:11 PL-SQL概述.ppt将介绍Oracle的编程语言PL/SQL,它用于编写数据库过程、函数、触发器等。PL/SQL结合了SQL查询语言和过程编程元素,是Oracle数据库开发的核心。 7. 光标的使用:12 光标的使用.ppt...

    二年级数学生活中的大数赵强PPT学习教案.pptx

    本文将针对一份面向二年级学生的数学学习教案进行解读,这份教案的标题为:“二年级数学生活中的大数赵强PPT学习教案”。 教案的核心目标是帮助孩子们理解并能够应用生活中的大数。课程内容不仅限于数学知识的传授...

    oracle 课件

    - **理论教学**:占培训内容的 50%,主要包括数据库基本概念、SQL 语言基础、表和索引的创建与管理等内容,通过文字和图片的形式进行讲解。 - **实践操作**:同样占据 50% 的比例,重点在于通过实际操作来加深理解,...

    day2013-0110-webLogic配置和集群(赵强).zip

    本资料包“day2013-0110-webLogic配置和集群(赵强).zip”包含了关于WebLogic的配置与集群搭建的详细教程,旨在帮助用户深入了解WebLogic的核心功能和管理技巧。 一、WebLogic基础配置 1. 安装与启动:首先,我们...

    10天掌握MongoDB

    NoSQL指的是“不仅仅是SQL”,它是对于传统关系型数据库的一种补充,尤其适用于处理大量非结构化或半结构化数据的情况。NoSQL数据库与传统的关系型数据库相比,其主要优点包括高并发读写能力、海量数据存储、高可...

    LoadRunner性能测试巧匠训练营-完整版(带目录)-赵强邹伟伟

    《LoadRunner性能测试巧匠训练营》是一本深入讲解LoadRunner性能测试的教材,由赵强和邹伟伟两位专家共同编著。该资源提供的是完整版,且无需密码即可解压阅读,对于想要学习和提升LoadRunner性能测试技能的人来说,...

    java代码-46 赖赵强

    【标题】"java代码-46 赖赵强"所指的可能是一个关于Java编程的项目或示例,由开发者赖赵强创建。在这个项目中,他可能分享了一段特定的Java代码,用于解决某种问题或者实现一个功能。这个标题暗示了这是一个与Java...

    信息存储技术的发展赵强.doc

    《信息存储技术的发展》 信息存储技术,作为信息技术的基石之一,从早期的岩画、古书,到现代的半导体、磁盘、光存储,再到先进的集群存储和虚拟化技术,其发展历程见证了人类社会的巨大变革。...

    赵强_微信购物首页改版用户调研1

    微信购物首页用户调研报告主要关注了微信购物首页用户的浏览动机、痛点以及不同用户群体的行为特征。报告通过定性和定量研究方法,包括一对一深访和问卷调查,收集了大量数据,旨在理解用户需求并优化用户体验。...

Global site tag (gtag.js) - Google Analytics