06 Spark SQL 及其DataFrame的基本操作

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

        sparkSQL的前身是shark。在hadoop发展过程当中,为了给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具,hive应运而生,是当时惟一运行在hadoop上的SQL-on-Hadoop工具。

sparkSQL做为Spark生态的一员继续发展,而再也不受限于hive,只是兼容hive;SparkSQL产生的根本原因是为了完全脱离Hive限制(解耦)

优化: sparkSQL的表数据在内存中存储不是采用原生态的JVM对象存储方式,而是采用内存列存储;字节码生成技术(bytecode generation,即CG);scala代码优化。

 

2.用spark.read 创建DataFrame

3.观察从不同类型文件创建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的基本操作

上一篇:多线程将excel数据写入mysql


下一篇:python数据分析-06DataFrame继续深入