spark学习(6)之SparkSQL基础

一、Spark SQL的基础:
1、Spark SQL的简介
Spark SQL is Apache spark’s module for working with structured data
Spark SQL 是apache spark用来出来结构化数据的模块
特点:
(1)容易集成成,安装好spark后就带有spark sql了
(2)统一的数据访问接口DataFrame
(3)兼容hive
(4)支持标准的数据访问方式:JDBC,ODBC
2、SparkSQL的核心数据模型是DataFrame:它的表现形式其实也是RDD
表(DataFrame) = 表结构(Schema) + 数据(RDD)
3、创建DataFrame:DataFrame仅支持DSL语句
(1)样本类case class
示例(使用员工表):
a、创建样本类型
case class Emp(empno:Int,ename:String,job:String,mgr:Int,hiredate:String,sal:Int,comm:Int,deptno:Int)
在这里插入图片描述
返回一个defined class Emp表示这个类已经定义好了
b、 读一一个数据(我们可以从hdfs上读取,因为是示例所以我们直接本地文件上读取了)

val lines=sc.textFile("/root/training/emp.csv").map(_.split(","))

在这里插入图片描述
我们可以看到RDD里边是一个数组类型
c、把数组类型的RDD映射成RDD[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))

在这里插入图片描述
d、转化成Spark SQL的核心数据模型DataFrame

val df=emp.toDF

在这里插入图片描述
然后我们可以查看表结构,可以使用DSL语句操作DataFrame

//查看表结构
df.printSchema

在这里插入图片描述
查询所有的数据

df.show

在这里插入图片描述
也可查询具体的几个字段

df.select("ename","sal").show

在这里插入图片描述
(2)sparksession
4、创建视图(要用到sparksession对象)
在sparkShell客户端打开的时候就自动创建了俩个对象,一个SparkContext对象叫sc,一个是SparkSession对象叫spark
创建视图是为了我们使用标准的sql语句来操作DataFrame,因为DataFrame仅支持DSL语句,所以我们需要把DataFrame转换成视图来用标准语句进行操作。
视图又分为局部视图和全局视图
局部视图:仅在当前session中有效

df.createOrReplaceTempView("emp1")
spark.sql("select * from emp1").show
spark.sql("select ename,sal from emp1").show

在这里插入图片描述
在这里插入图片描述
全局视图:可以在不同的session中访问,单独创建在global_temp的命名空间中

df.df.createGlobalTempView("emp2")

但是这里查询语句稍微和局部视图有点区别,因为他是创建在global_temp命名空间下的
我们先看一下异常语句

spark.sql("select * from emp2").show

org.apache.spark.sql.AnalysisException: Table or view not found: emp2; line 1 pos 14
他就会报一个这样的错,这是我们写的sql语句的问题

spark.sql("select * from global_temp.emp2").show

在这里插入图片描述
这样就正常了。然后我们看看局部视图和全局视图的区别,然后我们在当前spark-shell下重新的开启一个session

spark.newSession.sql("select * from emp1").show 

我们执行局部视图的语句的时候就会出现这样的错误
在这里插入图片描述
然后我们新开个session执行全局视图查询

spark.newSession.sql("select * from global_temp.emp2").show 

在这里插入图片描述
这回就正常了

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程简介 知识点介绍、代码演示、逻辑分析、灵活举例、使用图形的方式详细演示代码的流程和细节、整合企业级实战案例,全面讲解并突出重点,让学习也变成一种快乐。 课程亮点 1,知识体系完备,阶段学习者都能学有所获。 2,综合各种方式演示代码、分析逻辑,生动形象,化繁为简,讲解通俗易懂。 3,结合工作实践及分析应用,培养解决实际问题的能力。 4,使用综合案例来加强重点知识,用切实的应用场景提升编程能力,充分巩固各个知识点的应用。 5,整个课程的讲解思路是先提出问题,然后分析问题,并编程解决解题。 适用人群 1、对大数据感兴趣的在校生及应届毕业生。 2、对目前职业有进一步提升要求,希望从事大数据行业高薪工作的在职人员。 3、对大数据行业感兴趣的相关人员。 课程内容 第一章、Spark 基础环境 1.课程安排说明 2.Spark 框架概述 3.快速入门 4.Standalone集群及HA 5.Spark 应用开发入门 6.Spark 应用提交 7.Spark on YARN 8.应用部署模式DeployMode 第二章、SparkCore 模块 1.RDD 概念及特性 2.RDD 创建 3.RDD 函数及使用 4.RDD 持久化 5.案例:SogouQ日志分析 6.RDD Checkpoint 7.外部数据源(HBase和MySQL) 8.广播变量和累加器 9.Spark 内核调度 10.Spark 并行度 第三章、SparkSQL 模块 1.快速入门:词频统计 2.SparkSQL 概述 3.DataFrame 4.RDD与DataFrame转换 5.数据分析SQL和DSL 6.案例:电影评分数据分析 7.DataSet 8.外部数据源Exeternal DataSource 9.集成Hive 10.自定义函数UDF 11.分布式SQL引擎(spakr-sqlSpark ThriftServer) 12.Catalyst 优化器 第四章、离线综合实战 1.综合实战概述(需求、调研、业务) 2.环境搭建(大数据环境和应用开发环境) 3.项目初始化(工具类和属性文件) 4.广告数据ETL 5.Spark 分布式缓存 6.业务报表分析 7.应用执行部署 8.Oozie和Hue集成调度Spark 应用 第五章、SparkStreaming 模块 1.Streaming流式应用概述 2.Streaming 计算模式 3.SparkStreaming计算思路 4.入门案例 5.SparkStreaming工作原理 6.DStream及函数 7.集成Kafka 8.案例:百度搜索风云榜(实时ELT、窗口Window和状态State) 9.SparkStreaming Checkpoint 10.消费Kafka偏移量管理 第六章、StructuredStreaming模块 1.StructuredStreaming 概述(核心设计和编程模型) 2.入门案例:WordCount 3.输入源InputSources 4.Streaming Query 设置 5.输出终端OutputSink 6.集成Kafka(Source和Sink) 7.案例:物联网设备数据分析 8.事件时间窗口分析 9.Streaming Deduplication数据去重 10.Continues Processing连续流处理 第七章、实时综合实战 1.综合实战概述(需求、环境搭建和项目初始化) 2.模拟交易订单数据 3.数据实时ETL存储Kafka 4.实时应用停止 5.实时增量存储(存储HBase和Elasticsearch) 6.实时订单报表(Kafka-StructuredStreaming-Redis) 7.实时应用性能调优(数据本地性、反压机制、动态资源和日志管理)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枣泥馅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值