Spark SQL 及其 DataFrame 的基本操作

Spark SQL 及其 DataFrame 的基本操作

Q & A

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

关系数据库已经流行多年,能较好的满足各类商业公司的业务数据管理需求,但关系数据库在大数据时代已经不能满足各种新增的用户需求。用户需要从不同数据源执行各种操作(包括结构化和非结构化数据),也需要执行高级分析(在实际大数据应用中,经常需要融合关系查询和复杂分析算法)。
Spark SQL 的出现,填补了这个鸿沟。首先,Spark SQL 可以对内部和外部各种数据源执行各种关系操作;其次,可以支持大量的数据源和数据分析算法,有效地满足各种复杂的应用需求。

2. 用 spark.read 创建 DataFrame

  1. 从文件创建 spark.read
  2. 从RDD创建

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

  1. 共同点:在创建 Data Frame 时,都可以使用spark.read 操作,实现从不同类型的文件中加载数据创建DataFrame。
  2. 不同点:
    • spark.read.text("people.txt"):读取文本文件 people.txt
    • spark.read.json("people.json"):读取 JSON 文件
    • spark.read.parquet("people.parquet"):读取 Parquet 文件

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

Pandas 中 DataFrame 是可变的,而 Spark 中 RDDs 是不可变的,因此 DataFrame 也是不可变的。

Spark SQL DataFrame 的基本操作

1. 创建:

spark.read.text()

file = 'file:///usr/local/spark/examples/src/main/resources/people.txt'
df = spark.read.text(file)

spark.read.json()

file = 'file:///usr/local/spark/examples/src/main/resources/people.json'
df = spark.read.json(file)

2. 打印数据

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

text:

json:

3. 打印概要

df.printSchema()

text:

json:

4. 查询总行数

df.count()

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

text:

json:

5. 输出全部行

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

text:

json:

6. 查询概况

df.describe().show()

text:

json:

7. 取列

df['name']

df.name

df.select()

df.select(df['name']).show()

df.filter()

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

df.groupBy()

df.groupBy('age').count().show()

df.sort()

df.sort(df['age']).show()

posted @ 2021-05-10 21:59  1After909  阅读(117)  评论(0编辑  收藏  举报