7.Spark SQL

2022/6/7 2:20:59

本文主要是介绍7.Spark SQL,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

未交原因:忘记交了   1.请分析SparkSQL出现的原因,并简述SparkSQL的起源与发展。

spark出现的目的是为了替代Mapreduce,解决Mapreduce计算短板。我们知道最初的计算框架叫 mapreduce,他的缺点是计算速度慢,还有一个就是代码比较麻烦,所以有了 hive;hive 是把类 sql 的语句转换成 mapreduce,解决了开发难的问题,但是 hive 的底层还是 mapreduce,仍然是慢;spark 也看到了 hive 的优势,以 hive 为中心的一套框架 shark 营运而生,它是 spark 的前身,h 就是 hive 的意思;但是 为了 提高 shark 的效率,spark 自己开发了一套算法,替代了之前 hive 的思路,这套算法就是 sparkSQL。

 

2. 简述RDD 和DataFrame的联系与区别?

RDD 和 DataFrame 都是Spark平台对数据的一种抽象,一种组织方式,但是两者的地位或者说设计目的却截然不同。RDD 是整个 Spark 平台的存储、计算以及任务调度的逻辑基础,更具有通用性,适用于各类数据源,而 DataFrame 是只针对结构化数据源的高层数据抽象,其中在 DataFrame 对象的创建过程中必须指定数据集的结构信息( Schema ),所以 DataFrame 生来便是具有专用性的数据抽象,只能读取具有鲜明结构的数据集。

 

3.DataFrame的创建

spark.read.text(url)

spark.read.format("text").load("people.txt")

 

 4. PySpark-DataFrame各种常用操作

基于df的操作:

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

 

打印概要 df.printSchema()

 

 

查询总行数 df.count()

 

 

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

 

 

输出全部行 df.collect() #list类型,list中每个元素是Row类

 

 

查询概况 df.describe().show()

 

 

取列 df[‘name’], df.name, df[1]

 

 

选择 df.select() 每个人的年龄+1

 

 

筛选 df.filter() 20岁以上的人员信息

 

 

筛选年龄为空的人员信息

 

 

分组df.groupBy() 统计每个年龄的人数

 

 

排序df.sortBy() 按年龄进行排序

 

 

基于spark.sql的操作:

创建临时表虚拟表 df.registerTempTable('people')

spark.sql执行SQL语句 spark.sql('select name from people').show()

   

 

 

 

 

5. Pyspark中DataFrame与pandas中DataFrame

分别从文件创建DataFrame 

pandas中DataFrame转换为Pyspark中DataFrame、

 

 

 

 

Pyspark中DataFrame转换为pandas中DataFrame 

 

 

 

 

从创建与操作上,比较两者的异同

 

 

 

 

 

 

 

6.从RDD转换得到DataFrame

6.1 利用反射机制推断RDD模式

创建RDD sc.textFile(url).map(),读文件,分割数据项

 

7. DataFrame的保存

 

 

 

 



这篇关于7.Spark SQL的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程