spark SQL类似 hive 的功能。
hive 是把SQL转译成 查询hadoop的语法,
而spark SQL是把 SQL转译成 查询spark的语法。
并且,spark SQL的前身 shark(也叫hive on spark) 就是借鉴的hive的 前几个步骤,即除了最后的转译成 查询spark的代码,之前都借鉴了。
2.为什么用spark SQL? 2.1关系型数据库在大数据时代的不足根源还是因为关系型数据库不能满足目前数据存读需求,
大数据时代,90%的数据都是非结构化和半结构化的。
1.需要一个工具能够满足, 结构化和非结构化的数据处理需求。
2.关系型数据库,只能做一些简单的聚合 *** 作(求和、平均值等),
无法满足一些高级分析需求,比如 机器学习、图计算等。
spark SQL的优势:
1.有个数据抽象 叫dataframe,可以把结构化和 非结构化的数据融合起来。
2.可以应用于处理高级分析 机器算法、图形计算等。MLlib 的机器学习算法中,底层的数据结构就是是sparkSQL的 dataframe
2.2shark的缺陷spark SQL的前身 shark(也叫hive on spark) 照搬hive的 前几个步骤,
存在2个致命问题,
1. 执行计划优化环节,无法添加新的优化策略
hive 是专门把SQL转为对hadoop的查询 ,即MapReduce程序,
对spark的程序的优化并不好。
2.spark是线程级的程序,而hadoop是进程级的程序。
导致shark 一开始就存在 线程安全问题。
所以,sparkSQL除了引用 hive 中第一个parase模块 (该模块是把SQL转为语法树)外,其他模块,查询计划、查询优化....完全面向spark应用自己研发。
3.spark SQL的使用 3.1 spark dataframesparkSQL新增了一个 数据抽象,dataframe
dataframe 相较RDD 多了一个结构化存储。
3.2 RDD 和 sparkSQL 的dataframe 的区别传统的RDD是将数据存储为一个个对象,然后数据的值相当于对象的一个属性。
eg:RDD 需要找到张三的刷牙杯,第一步,先找到张三 这个对象,然后再从张三对象中 取刷牙杯的属性。
dataframe 是相当于 把RDD做了结构化的存储。
3.3创建 dataframe 对象 3.3.1 就像创建RDD一样,需要先创建一个sparkSession 对象ps:spark-shell 环境中会 自动生成两个对象, sparkContext对象 :sc 和 sparkSession对象:spark
但是如果在 自己的编程环境中,需要手动生成 sparkSession对象
ps:在idea中 ,如果没有sparkSQL的依赖,需要现在pom.xml 中添加依赖,
org.apache.spark spark-sql_2.123.0.3
如果不确定下载哪个版本,Apache可以查看对应的 版本。
下载链接: Downloads | Apache Spark
第一个框选对应的 spark版本,
第3个可以直接下载 全部依赖。
下载好后,可以解压看下 jars 文件夹内,对应的 各个组件版本。
3.3.2创建dataframe
1.
2.导入隐式转换包,
3.读取数据文件
读取json 数据:
读取parquet文件
读取csv 文件:
eg1: 读取一个json文件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)