SparkSQL?

1. SparkSQL用于处理大规模结构化数据的计算引擎

2. SparkSQL在企业中广泛使用,并性能极好,学习它不管是工作还是就业都有很大帮助

3. SparkSQL:使用简单、API统一、兼容HIVE、支持标准化JDBC和ODBC连接

4. SparkSQL 2014年正式发布,当下使用最多的2.0版Spark发布于2016年,当下使用的最新3.0办发布于2019年

SparkSQL的数据抽象?

Pandas -DataFrame 二维表数据结构。单机(本地)集合

SparkCore - RDD ·无标准数据结构,存储什么数据均可·分布式集合(分区)

SparkSQL - DataFrame 二维表数据结构。分布式集合(分区)

sparkSQL其实有3类数据抽象对象

SchemaRDD对象(已废弃)

DataSet对象:可用于Java、Scala语言

DataFrame对象:可用于Java、Scala、Python、R

我们以Python开发SparkSQL,主要使用的就是DataFrame对象作为核心数据结构

1. SparkSQL和 Hive同样,都是用于大规模SQL分布式计算的计算框架,均可以运行在YARN之上,在企业中广泛被应用

2. SparkSQL的数据抽象为: SchemaRDD(废弃)、DataFrame (Python、R.Java、Scala) . DataSet (Java、scala)。

3. DataFrame同样是分布式数据集,有分区可以并行计算,和RDD不同的是,DataFrame中存储的数据结构是以表格形式组织的,方便进行SQL计算

4. DataFrame对比DataSet基本相同,不同的是DataSet支持泛型特性,可以让Java、Scala语言更好的利用到。

5. SparkSession是2.0后退出的新执行环境入口对象,可以用于RDD、SQL等编程

完成小案例:

# coding:utf8

from pyspark.sql import SparkSession

if __name__ == '__main__':
spark = SparkSession.builder.appName("test").master("local[*]").getOrCreate()

sc = spark.sparkContext

df = spark.read.csv("../data/stu_score.txt",sep=',',header=False)
df2 = df.toDF("id","name","score")
df2.printSchema()
df2.show()
df2.createTempView("score")

spark.sql("""
select * from score where name = '语文' limit 5
""").show()

df2.where("name='语文'").limit(5).show()