赞
踩
1.SparkSQL 支持Spark 写SQL处理分布式数据。
2.SparkSQL 发展过程:
Hive -> Shark -> SparkSQL
Hive & Shark & SparkSQL 区别?
1).Hive 支持写SQL 查询分布式数据,底层Hive负责SQL解析优化,转成MapReduce任务处理数据。
2).Shark 是早期Spark与Hive整合出来的,支持Sprak中写SQL查询分布式数据技术,Shark依赖了hive的解析优化SQL,底层转成Spark任务处理数据。
3).SparkSQL是基于Shark演变过来,SparkSQL脱离了Hive的限制,与Hive做到了解耦。
4).Shark兼容Hive语言,SparkSQL兼容Hive与Shark语法。
5).SparkSQL可以针对原生的RDD进行查询,查询得到的结果又可以转换成RDD去使用。
3.两种组合
Hive on Spark:–Shark
Hive:负责SQL解析优化,存储。
Spark:Spark是底层执行引擎。
Spark on Hive : --SparkSQL
Hive : 负责存储
Spark : Spark负责SQL解析优化,执行引擎。
RDD & Dataset & DataFrame什么区别?
1).RDD是弹性分布式数据集,RDD是SparkCore底层核心操作的对象
2).Dataset是SparkSQL中底层操作的核心对象,Dataset与RDD类型有分区,是分布式的,只是底层处理数据时,不需要将字节数组反序列化成对象操作,数据处理速度快。
3).DataFrame = Dataset[Row] ,如果想要在SparkSQL中使用SQL处理数据需要得到DataFrame。
SparkConf & SparkContext & SQLContext &HiveContext & SparkSession
1).SparkConf 是Spark的配置对象,编写SparkApplication时,可以直接对当前SparkApplication做配置
2).SparkContext 是Spark Core中通往集群的唯一通道,有了SparkContext就可以创建RDD,处理数据。
3).SQLContext 是Spark2.0 版本之前推出的SparkSQL中操作的对象,想要使用SparkSQL处理数据,需要创建出SQLContext读取文件加载DataFrame
4).HiveContex 是SQLContext的子类,需要读取Hive中的数据时,需要创建这个对象。
5).SparkSession 是Spark2.0+之后推出的兼容SparkConf,SparkContext,SQLContext,HiveContext的对象,一个对象可以搞定以上多个对象
6.创建DataFrame的方式
1).读取json格式的数据获取DataFrame
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。