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

Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个叫作Data Frame的编程抽象结构数据模型(即带有Schema信息的RDD),Spark SQL作为分布式SQL查询引擎,让用户可以通过SQL、DataFrame API和Dataset API三种方式实现对结构化数据的处理。但无论是哪种API或者是编程语言,都是基于同样的执行引擎,因此可以在不同的API之间随意切换。

Spark SQL的前身是 Shark,Shark最初是美国加州大学伯克利分校的实验室开发的Spark生态系统的组件之一,它运行在Spark系统之上,Shark重用了Hive的工作机制,并直接继承了Hive的各个组件, Shark将SQL语句的转换从MapReduce作业替换成了Spark作业,虽然这样提高了计算效率,但由于 Shark过于依赖Hive,因此在版本迭代时很难添加新的优化策略,从而限制了Spak的发展,在2014年,伯克利实验室停止了对Shark的维护,转向Spark SQL的开发。

Shark Hive on Spark Hive即作为存储又负责sql的解析优化,Spark负责执行

SparkSQL Spark on Hive Hive只作为储存角色,Spark负责sql解析优化,执行

SparkSQL产生的根本原因是为了完全脱离Hive限制(解耦)

2.用spark.read 创建DataFrame

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

txt文件:创建的DataFrame数据没有结构

json文件:创建的DataFrame数据有结构

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

 

Spark SQL DataFrame的基本操作

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'

df1=spark.read.json(file)

打印数据

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

打印概要

df.printSchema()

df1.printSchema()

查询总行数

df.count()

df1.count()

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

df.head(3)

df1.head(3)

输出全部行

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

df.collect()

df1.collect()

查询概况

df.describe().show()

df1.describe().show()

取列

df[‘name’]

df1['name']

df.name

df1.name

df.select()

df1.select(df1.name).show()

df.filter()

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

df.groupBy()

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

df.sort()

df1.sort(df1.age.desc()).show()

 

最新文章

  1. [LeetCode] Read N Characters Given Read4 II - Call multiple times 用Read4来读取N个字符之二 - 多次调用
  2. spring Quartz多个定时任务的配置
  3. structs2之多文件上传
  4. 实现在Android 进程和线程
  5. 使用LocalBroadcastManager
  6. java length属性 length()方法 size()方法
  7. The Name/Origin of Country names
  8. 【转】Android SDK Manager 更新方法
  9. 实现Linux select IO复用C/S服务器代码
  10. 字符串(后缀自动机):NOI 2016 优秀的拆分
  11. MySQL 参数autoReconnect=true 解决8小时连接失效(转)
  12. 阿里云被挖矿进程wnTKYg入侵的解决方法
  13. 爬虫之正则和xpath
  14. 解决 Visual Studio 点击添加引用无反应的问题
  15. Semantic Compositionality through Recursive Matrix-Vector Spaces-paper
  16. python函数练习——个人信息修改
  17. 【洛谷】【模拟+栈】P4711 「化学」相对分子质量
  18. 每日踩坑 2018-01-09 WebAPI会如何面对 枚举 参数?
  19. xml ----> 几个常用dtd头文件模板
  20. Ng第十九课:总结(Conclusion)

热门文章

  1. 基于excel的自动化框架
  2. 关于.bashrc文件
  3. [Swift]Xcode格式化代码快捷键
  4. vue.cli的安装配置
  5. websphere+IHS+plugin集群搭建
  6. 关键aspNetCore processPath 这一行,耗费了一天
  7. 大小写字符转换【Sql Server和C#两种写法】
  8. expect语言使用之自动切换账户或自动登录远程服务器
  9. Rocky linux command-1
  10. bilibili经典面试题