06 Spark SQL 及其DataFrame的基本操作

1.Spark SQL出现的 原因是什么?

Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个叫作Data Frame的编程抽象结构数据模型(即带有Schema信息的RDD),Spark SQL作为分布式SQL查询引擎,让用户可以通过SQL、DataFrame API和Dataset API三种方式实现对结构化数据的处理。但无论是哪种API或者是编程语言,都是基于同样的执行引擎,因此可以在不同的API之间随意切换。

Spark SQL的前身是 Shark,Shark最初是美国加州大学伯克利分校的实验室开发的Spark生态系统的组件之一,它运行在Spark系统之上,Shark重用了Hive的工作机制,并直接继承了Hive的各个组件, Shark将SQL语句的转换从MapReduce作业替换成了Spark作业,虽然这样提高了计算效率,但由于 Shark过于依赖Hive,因此在版本迭代时很难添加新的优化策略,从而限制了Spak的发展,在2014年,伯克利实验室停止了对Shark的维护,转向Spark SQL的开发。

Shark Hive on Spark Hive即作为存储又负责sql的解析优化,Spark负责执行

SparkSQL Spark on Hive Hive只作为储存角色,Spark负责sql解析优化,执行

SparkSQL产生的根本原因是为了完全脱离Hive限制(解耦)

2.用spark.read 创建DataFrame

3.观察从不同类型文件创建DataFrame有什么异同?

 txt文件:创建的DataFrame数据没有结构

json文件:创建的DataFrame数据有结构

4.观察Spark的DataFrame与Python pandas的DataFrame有什么异同?

06 Spark SQL 及其DataFrame的基本操作

 

 

 

Spark SQL DataFrame的基本操作

spark.read.text()

file=‘file:///usr/local/spark/examples/src/main/resources/people.txt‘

df=spark.read.text(file)

06 Spark SQL 及其DataFrame的基本操作

spark.read.json()

file=‘file:///usr/local/spark/examples/src/main/resources/people.json‘

df1=spark.read.json(file)

06 Spark SQL 及其DataFrame的基本操作

打印数据

df.show()默认打印前20条数据,df.show(n)

06 Spark SQL 及其DataFrame的基本操作

 06 Spark SQL 及其DataFrame的基本操作

打印概要

df.printSchema()

06 Spark SQL 及其DataFrame的基本操作

 df1.printSchema()

06 Spark SQL 及其DataFrame的基本操作

查询总行数

df.count()

df1.count()

06 Spark SQL 及其DataFrame的基本操作

df.head(3) #list类型,list中每个元素是Row类

df.head(3)

df1.head(3)

06 Spark SQL 及其DataFrame的基本操作

输出全部行

df.collect() #list类型,list中每个元素是Row类

 df.collect()

 df1.collect()

06 Spark SQL 及其DataFrame的基本操作

查询概况

df.describe().show()

06 Spark SQL 及其DataFrame的基本操作

  df1.describe().show()

06 Spark SQL 及其DataFrame的基本操作

取列

df[‘name’]

df1[‘name‘]

06 Spark SQL 及其DataFrame的基本操作

df.name

df1.name

06 Spark SQL 及其DataFrame的基本操作

 

 

 

df.select()

df1.select(df1.name).show()

06 Spark SQL 及其DataFrame的基本操作

 

 

 df.filter()

df1.filter(df1.age>20).show()

06 Spark SQL 及其DataFrame的基本操作

 

 

 

df.groupBy()

df1.groupBy(‘age‘).count().show()

06 Spark SQL 及其DataFrame的基本操作

 

 

df.sort()

df1.sort(df1.age.desc()).show()

06 Spark SQL 及其DataFrame的基本操作

 

06 Spark SQL 及其DataFrame的基本操作

上一篇:新手指南之在Linux之CentOS7上部署MySQL数据库


下一篇:C++ADO读写SqlServer函数封装