1.Spark SQL出现的 原因是什么?
Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个叫作Data Frame的编程抽象结构数据模型(即带有Schema信息的RDD),Spark SQL的前身是 Shark,由于 Shark过于依赖Hive,因此在版本迭代时很难添加新的优化策略,从而限制了Spak的发展,在2014年,伯克利实验室停止了对Shark的维护,转向Spark SQL的开发。Shark将SQL语句的转换从MapReduce作业替换成了Spark作业,Spark SQL 可以提供DataFrame API,可以对内部和外部各种数据源执行各种关系操作;可以支持大量的数据源和数据分析算法,组合使用Spark SQL 和Spark MLlib。
2.用spark.read 创建DataFrame
有以下这几种通过spark.read 创建DataFrame: spark.read.text(‘people.txt‘)、spark.read.json(‘people.json‘)、spark.read.parquet(‘people.parquet‘)、spark.read.format(‘text).load(‘people.txt‘)、spark.read.format(‘json).load(‘people.json‘)、spark.read.format(‘parquet).load(‘people.parquet‘)
3.观察从不同类型文件创建DataFrame有什么异同?
1、txt文件:创建的DataFrame数据没有结构
2、json文件:创建的DataFrame数据有结构
4.观察Spark的DataFrame与Python pandas的DataFrame有什么异同?
Spark SQL DataFrame的基本操作
创建: spark.read.text() spark.read.json()
打印数据 df.show()
默认打印前20条数据,df.show(n)
打印概要 df.printSchema()
查询总行数
df.count()
df.head(3) #list类型,list中每个元素是Row类
输出全部行 df.collect() #list类型,list中每个元素是Row类
查询概况 df.describe().show()
取列 df[‘name’]
df.name
df.select()
df.filter()
df.groupBy()
df.sort()