spark SQL基础教程

1.sparkSQL入门

sparksql专门用于处理结构化的数据,而RDD还可以处理非结构化的数据。sparksql的优点之一是sparkfsql使用统一的api读取不同的数据,第二个优点是可以在语言中使用其他语言,例如python。另外sparksql还可以兼容hive,hive本身也是优秀的处理计算引擎,两个计算引擎相结合时非常有竞争力。

2.sparksql的概述

sparksql与hive的异同点

都是分布式的计算引擎,都可以运行在yarn之上。spark是基于内存计算,底层由RDD实现,hive是老式的mapreduce,基于磁盘,spark相对效率更高。spark SQL无元数据管理,可以混合代码来执行,hive只能写sql。

sparkSQL的数据类型

首先是dataFrame即二维表的一种结构(pandas),是一种本地的数据集合。

然后是spark core的RDD,没有固定的数据结构。

spark SQL使用了dataframe的数据结构,是一个分布式的数据集合,这一点和pandas的不一样。

schema RDD已被废弃了,因为RDD适用的范围比较广,不适用于sql。
dataFrame与RDD的区别在于数据结构的不同,其他方面很相似。例如RDD底层是以数组对象存储。

3.sparkSession对象的编程实例

一般赋值给spark
sc = spark.Context # RDD 操作入口
python代码
df = spark.read.csv(‘data.csv’,sep=‘,’,header=False)
df2 = df.toDF(‘id’,‘name’,‘score’) # 加上列名
df2.printSchema() # 展示表信息
df2.show()# 展示表
df2.createTempView(‘score’)

spark.sql(“”" select * from score where name=‘语文’
“”").show()

df2.where(“name=‘语文’”).show()

4.dataFrame入门操作

dataframe的表结构
在这里插入图片描述

基本操作

数据

语文,99
数学,98
英语,90

代码
rdd = sc.textFile(‘data.txt’) # 读出来是一个数组,每个元素是txt中的一行
.map(lambda x:x.split(‘,’)) # 切分
.map(lambda x:(x[0],int(x[1]))) # 类型转化,由字符串转为实数

df = spark.createDataFrame(rdd,schema=[‘name’,‘score’])
df.printSchema()
df.show(20,False) # 参数1表示展示多少条,默认为20条,参数2表示是否对列进行截断,截断时会使用…省略20条之后的数据。
df.createorReplaceTempView(‘score’)
spark.sql(“”“select * from score where scoer < 95"”").show()

5.catalyst优化器

RDD的运行受到开发者水平的影响,而sparkSQL能够自动优化。这是由于RDD有多种数据结构,而dataFrame是一种结构化数据,可以使用catalyst优化器进行优化。

在这里插入图片描述

6.spark on hive

spark缺少了一个元数据管理功能。而hive有元数据管理功能,hive的执行过程与spark类似,比spark多一个元数据管理功能。hive的元数据管理器和spark对SQL的处理构成了spark on hive。在spark中的hive配置文件中配置metastore服务即可。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值