小白spark学习感悟 AND spark两大版本的比较!!!

这个时候的我学了spark已经3个月左右的因为还有平时上课所以学的比较零散,有不足的地方希望大家指出来

对于刚刚入spark的小白(me too)来说我觉得你们很有必要读读这篇介绍,你可能看不懂,你也有可能觉得没什么实在的内容,但是我劝你好好看看,看完之后对你的学习spark2.0应该会有比较的好的帮助,因为市面上的对spark2.0介绍的书记比较少,所以我是队对照着官网的文档来学习,英语不好学起来很吃力,中间想过放弃,但是还是坚持下来了!!!


基本的介绍完毕了,希望能为大家起到引导的作用,在学习spark一定要把scala基础看看,不然你最多留在只能理解什么是什么,而不会理解什么为什么是什么,学什么深入学习一样技能之前一定要明白服务和服务之间的关系不然到后期很容出现概念混淆的情况,学习的时候一定要把重点放在基础上,基础学的好怎么学都快(切身体会),我身边的大佬们都觉的前期一定要把core这部分弄清晰明了,

还有切记眼高手低,我才开始的时候看视频学的看完了,发现自己没有api啥都不会,后来奋发图强把常用的算子用java和scala都实现了一遍,现在想想真的有点不容易,那时候才刚刚学习啊,就像一刚刚开学我就把所有的课文都抄了一遍,超级有成就感的,平时没事多练习,觉得差不多了可以看看源码了但是我个人觉得这个时候你可以找一本书看看(强烈推荐《图解spark》),看看深度解析部分我觉得你可以先随便看一遍大概知道什么是DAG,进程间通信等,然后再开始跟源码就跟WC的源码,然后后面就可以找个项目工程来跟源码(我还没走到这一步)

Spark2.x0引入了很多优秀特性,性能上有较大提升,API 更易用。在编程统一方面非常惊艳,实现了离线计算和流计算 API 的统一,实现了 Spark sql Hive Sql 操作 API 的统一。Spark 2. 0基本上是基于 Spark 1.0 进行了更多的功能和模块的扩展,及性能的提升。


------------------------------------------------分割线-------------------------------------------------------


Spark2.0 新特性

1). SparkCore/SQL

在内存和CPU使用方面进一步优化Spark引擎性能(钨丝计划)。支持SQL 2003标准,支持子查询,对常用的SQL操作和DataFrame,性能有2-10倍的提升。

然后看下新的sparkSQL创建的实例:代码如下(以下内容基于JSON文件的内容创建数据文件:):

SparkSession spark = SparkSession

  .builder()

  .appName("Java SparkSQL basic example")

  .config("spark.some.config.option","some-value")

  .getOrCreate();

Dataset df = spark.read().json("examples/src/main/resources/people.json");

 

// Displays the content of the DataFrame to stdout

df.show();

// +----+-------+

// | age|   name|

// +----+-------+

// |null|Michael|

// |  30|   Andy|

// |  19| Justin|

// +----+-------+
(官网示例)

大家在看spark教学视频的是看sparksql之前可以跟着老师来学习,看到后面会发现讲师使用的是Context类但是新版的sql是session下面为大家介绍

这样我们就创建了一个sparkSQL的实例

2). sparksession

Spark2.0 中引入了 SparkSession 的概念,它为用户提供了一个统一的切入点来使用 Spark 的各项功能,统一了旧的SQLContextHiveContext。用户不但可以使用 DataFrame Dataset 的各种 API,学习 Spark2 的难度也会大大降低。而且老的接口是向上兼容的,

3). 统一 DataFrames Datasets API

它们都是提供给用户使用,包括各类操作接口的 API1.3 版本引入 DataFrame1.6版本引入Dataset,在 spark 2.0 中,把 dataframes 当作是一种特殊的 datasetsdataframes = datasets[row],把两者统一为datasets(说白了活着狭义点理解就是大taframes就是基于行的dataset子类)。

4). StructuredStreaming

Spark Streaming基于Spark SQL(DataFrame / Dataset )构建了high-level API,使得Spark Streaming充分受益Spark SQL的易用性和性能提升。

5). 其它特性

mllib 里的计算用 DataFrame-based API 代替以前的 RDD 计算逻辑,提供更多的 R 语言算法,默认使用 Scala 2.11 编译与运行。




希望能帮助大家!!!


你可能感兴趣的:(spark)