1.上节课复习
SparkSQL不仅仅是SQL,他还可以处理其他不同的文件系统,并且他不一定需要hive,若想处理Hive俩种方式,一是Hive-site.xml,第二种就是代码url地址直接写成metastore的地址
2.为什么不在web界面上设计一些按钮,方面用来操作呢?
因为java界面做的数据,大都是mysql,nosql等关系型数据库,这些数据的东西较小,能很快的返回相应的数据,然而Spark不同,他大都采用分布式的数据量较大,不能实时的返回结果给你,反而会处于阻塞状态。
3.DataFrame(1.3版本之前叫SchemaRDD)
概念:A Dataset is a distributed collection of data.DataFrame是关系型数据库里面的一张表。
(1)这是一个分布式的数据集,按列进行组织的,它就等于一个关系型数据库,它等于一个Dataset[Row]里面的类型是Row。
python pandas \R:都有DataFrame框架,但是他俩是单机的,处理的数据量十分有限。
支持的语言:JAVA Scala R Python
4.Dataset(1.6版本出来的)
DataFrame=Dataset[row]
支持语言:JAVA Scala
5.DataFrame vs RDD
(1)俩这都是分布式的数据集,都可以并行计算,RDD是没有Schama的,所以DF是一张表,它的信息是要比RDD全的,除了数据以外还有许多字段信息,API上DataFrame提供的接口比RDD上更多,RDD是不知道传入数据的数据结构的,但DataFrame上有许多的字段信息,可以更好的做优化, 如位次下压,列裁剪等。
6.DF的执行流程
(1)譬如JAVA Scala API:是直接在自己JVM环境(或者其他环境)之下运行的,所以各自底层实现机制大不相同,性能差异也大
(2)DF首先会转换成一个逻辑执行计划(logic plan),然后最许多的优化之后成为物理执行计划(physical plan),所以只要是用DF接口的底层的实现机制都差不多
7,SparkSQL入口点
(1)小于2版本的:SQLContext HiveContext 有缺点不能同时访问俩个
大于等于2版本的:统一都叫SparlSession
8.基本操作
(1)./spark-shell --master local[2] --jars /home/hadoop/software/mysql--xxx-bin,jar