ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

7.Spark SQL

2022-06-06 12:03:32  阅读:161  来源: 互联网

标签:df list hive RDD DataFrame SQL Spark spark


未交原因:忘记交了   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的保存

 

 

 

 

标签:df,list,hive,RDD,DataFrame,SQL,Spark,spark
来源: https://www.cnblogs.com/yutou34/p/16347688.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有