本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------------------------------------------------------------------------/** *  Scala中最常见的两种数据结构:Map 和 Tuple *   *  Map初步感受就是key,value方式,key即是值的索引,排列非常规按照Hash…
/** * 函数式编程进阶: * 1.函数和变量一样作为Scala语言的一等公民,函数可以直接赋值给变量 * 2.函数更常用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称, * 一般会把它赋值给变量,在Spark源码中大量存在 * 3.函数可以作为参数直接传递给函数,极大的简化了编程代码,在Java中需要通过callback来实现 * 这样的功能 * 4.当函数的返回类型是函数的时候,这就表明Scala函数实现了闭包,Scala函数其实是类和对象, * 所以,Sca…
Spark中的源码的提取器和注解 @SparkContext.scala @ volatile 线程专用 保证线程间共享内容的一致性 @volatile private var _dagScheduler: DAGScheduler = _ @ DeveloperApi 表示开发者使用的API /** * :: DeveloperApi :: * Return information about what RDDs are cached, if they are in mem or on dis…
隐式转换:当某个类没有具体的方法时,可以在该类的伴生对象或上下文中查找是否存在隐式转换,将其转换为可以调用该方法的类,通过代码简单的描述下 一:隐式转换 1.定义类Man class Man(val name: String) 2.定义类SuperMan,并在类中定义一个方法 class SuperMan(val name: String) { def makeMiracles = println(this.name + " is super man!") } 3.在main方法中实例…
scala类和对象 RDD中创建_sc和deps相比java更加的简洁. 在Spark的例如SparkContext.sqlSpark等全局成员在完成实例化. 在唯一实例的时候一般不会去使用伴生对象apply方法. 伴生类和伴生对象必须写在同一个文件之中.…
1.SparkSession.scala //导入某个类 import scala.beans.Introspector //导入某包下所有的类 import scala.beans._ //导入某包下几个类 import org.apache.spark.{SPARK_VERSION,SparkConf,SparkContent} 2.SparkContext.scala //导入时对类进行重命名 import org.apache.hadoop.mapreduce.{InputFormat=…
本篇文章主要讲述Scala函数式编程之偏函数,异常,及Lazy 第一部分:偏函数 偏函数:当函数有多个参数,而在使用该函数时不想提供所有参数(比如函数有3个参数),只提供0~2个参数,此时得到的函数便是偏函数. */ object C18 { def main(args: Array[String]): Unit = { val sample=1 to 10 val isEven:PartialFunction[Integer,String]={ case x if x%2==0=>x+"…
1.Scala的类和方法.函数都可以是泛型 2.上界:表示泛型的类型必须是某种类型或者其类型的子类,语法:<: ,对类型进行限定 3.下界:表示泛型的类型必须是某种类型或者其类型的父类,语法:>: 4.View Bounds,可以进行隐式转换,将其转换成目标类型,是上边界和下边界的加强版, 语法 T <% U,T必须是U的类型,但是又没有直接继承自U,所以要通过隐式转换操作 5.T:ClassTag,一种类型转换,编译的时候类型不够,需要通过JVM的runtime来通过运行时的获取信息…
package com.dt.spark.scala.bascis object Functional_Itearal {   def main(args: Array[String]): Unit = {        val range = 1 to 10     val list = List(1,2,3,4,5)     println(list.head)      println(list.tail)            println(list.tail)         pri…
package com.dt.spark.scala.bascis class Dataframework case class Computerframework (name:String,popular:Boolean) extends Dataframework case class Storgeframework (name:String,popular:Boolean) extends Dataframework object helloPatternMatch { def main(…
第一点: scala的接口trait中所有方法可以都被实现!! 这种情况一般会是一种工具方法的集合,例如接口 Logging! scala 多种继承用extends ... with  .... 在老师讲解的1.6.X版本中Spark继承采用的是class SparkContext(config:Sparkconf) extends Logging with  ExecutorAllocationClient{} 抽象属性的概念: val name:String 有类型定义但是没有赋值. sca…
isInstanceOf  和 asInstanceOf is用于判断 as用于转换,把父类类型转换成子类类型   getClass 具体找出类型    …
1.环境搭建 基础环境配置 jdk+idea+maven+scala2.11.以上工具安装配置此处不再赘述. 2.源码导入 官网下载spark源码后解压到合适的项目目录下,打开idea,File->open 找到源码文件夹,选中spark-parent的pom文件,确定-> open as a project.接下来就是漫长的依赖解析过程. 3.依赖解析完成后,得到一个漂亮的spark项目 4. 尝试编译.最近需要用到spark-sql相关的东西,我们先尝试编译一下spark-sql,在ide…
本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络编程经验,必竟实践性的代码上手就是网络编程.如果你对网络编程,以及IM的一些理论知识知之甚少,请务必首先阅读:<新手入门一篇就够:从零开发移动端IM>,该文为IM小白分类整理了详尽的理论资料,请按需补充相关知识. 配套源码:本文写的比较浅显但不太易懂,建议结合代码一起来读,文章配套的完整源码 请从…
本课内容1.Spark中Scala集合操作鉴赏2.Scala集合操作实战 ------------------------------------------------------------------------------------------------------------------------ /** * 大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: * 1.数据集合:会涉及数据的搜集.存储等,搜集会有很多技术,存储现在比较经典的是使用Hadoop, * …
val声明的不可变的战略意义:1.函数式编程中要求值不可变,val天然符合这一特性:2.在分布式系统中,一般都要求值不可变,这样才能够要求分布式系统的设计和实现,同时拥有更高的效率,val声明的内容都不可变,所以不用担心在机器之间传递数据的时候修改数据,这为分布式编程打下非常好的基础,包括Spark中的核心抽象RDD也是不可变得: 重要结论:Scala中一切皆对象.Scala中所有类型都是Class Scala的apply方法:是Scala对象构造的工厂方法,由于控制Scala类对象的生成,实际…
/** * 如果有这些语法的支持,我们说这门语言是支持面向对象的语言 * 其实真正面向对象的精髓是不是封装.继承.多态呢? * --->肯定不是,封装.继承.多态,只不过是支撑面向对象的 * 一些语言级别的语法和功能,真正的面向对象其实有三个核心特征: * 第一:对象不用关心消息从哪里来,也不关心消息到哪去,只关心消息处理本身 * ,也就是说面向对象是弱耦合的且对象是消息驱动的,或者说对象是数据驱动的 * 第二:一个对象的行为不影响另一个对象的行为,一个对象挂掉了另一个对象 * 不会随着它一起挂…
1 ======================1.零基础快速入门SpringBoot2.0 5节课 =========================== 1.SpringBoot2.x课程全套介绍和高手系列知识点     简介:介绍SpringBoot2.x课程大纲章节         java基础,jdk环境,maven基础 2.SpringBoot2.x依赖环境和版本新特性说明 简介:讲解新版本依赖环境和springboot2新特性概述 1.依赖版本jdk8以上, Springboot2…
package com.wanji.scala.test import javax.swing.text.AbstractDocument.Content import scala.actors.Actor case class Hello(name:String,content:String,send:Actor) case class HelloBack(name:String,content: String,sender:Actor) /** * 描述:Scala编程实战 * 作者: su…
本文以Spark1.1.0版本为基础. 经过前一段时间的学习,基本上能够对Spark的工作流程有一个了解,但是具体的细节还是需要阅读源码,而且后续的科研过程中也肯定要修改源码的,所以最近开始Spark的源码的学习.首先以重要文件为基础分别分析,然后再整体的分析. (一)DAGScheduler.scala文件的主要功能 DAGScheduler是划分Job为stage的调度,它是在作业所需要的数据已经被分为RDD之后执行的.DAGScheduler将Job划分为DAG图,以stage为图的结点,…
Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户的通信采用“请求/响应”的模式. Servlet可完成如下功能: 创建并返回基于客户请求的动态HTML页面. 创建可以嵌入到现有HTML页面中的部分HTML页面(HTML片段). 与其他服务器资源(如数据库或基于Java的应用程序)进…
文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们的绑定的地址上,通过解析XML数据,获取到微信用户发送的消息,让根据微信消息(文本:关键字,图片,语音等等)回复XML格式的数据给微信服务器,微信服务器再将接收到的消息返回给用户微信. 我们所需要做的:接收消息和返回消息 一.创建实体类 首先看文档http://mp.weixin.qq.com/wi…
如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!而且,Xamarin已经被微软收购并被大力推广,.NET开发人员将时间投资在Xamarin上,以应对移动开发的热潮,应该是值得的. 好了,废话不多说,就开始吧.本系列文章将详细介绍如何使用Xamarin开发出一个简单的即时通信IM聊天系统(文末有源码下载,可先睹为快),本文作为第一篇基础篇,将着重介绍Xamarin Andro…
今天跟随王老师学习了从源码角度去分析scala中的模式匹配的功能.让我们看看源码中的这一段模式匹配: 从代码中我们可以看到,case RegisterWorker(id,workerHost,........){}这里为模式匹配,而我们的模式匹配类RegisterWorker之前就已定义好,如下图: 我们可以看到,我们的模式匹配类是已经定义好的,当我们的master接收到worker发来的消息时,进行模式匹配: . 这里还有一个知识点,我们可以发现,当我们进行模式匹配时,我们并没有使用new方法…
如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!而且,Xamarin已经被微软收购并被大力推广,.NET开发人员将时间投资在Xamarin上,以应对移动开发的热潮,应该是值得的. 好了,废话不多说,就开始吧.本系列文章将详细介绍如何使用Xamarin开发出一个移动端的即时通信系统(手机聊天程序)(文末有源码下载,可先睹为快),本文作为第一篇基础篇,将着重介绍Xamarin…
Scala函数式编程 ------------------------------------------------------------------------------------------------------------------------/** * 函数可以被简单的被认为是包裹了一条或几条语句的代码体, * 该代码体接收若干参数,经过代码体处理后返回结果, * 刑如数学中的f(x) = x + 1 *  * 在Scal中函数式一等公民,可以像变量一样被传递,被赋值,同时 …
共计28课,每节课程在1个小时左右. 每天至少2个课程.预计在11.30号完成. ——————————————————…
shuffleBlockManager继承于Logging,参数为blockManager和shuffleManager.shuffle文件有三个特性:shuffleId,整个shuffle stage所具有的唯一Id:bucketId,输出的partition的Id:fileId,标志着这一组文件属于同一个shuffle,每个task在同一时间只有一个fileId,执行完成后fileId归还资源池.shuffle的状态由shuffleState类来描述,包含其相关的所有状态信息,包括:分配给该…
Executor.scala 一.Executor类 首先判断本地性,获取slaves的host name(不是IP或者host: port),匹配运行环境为集群或者本地.如果不是本地执行,需要启动一个handler来监控所有的executor进程,避免阻塞.然后,初始化Spark执行环境.向SparkEnv注册executor资源,即registerSource方法.第三步,装载类,序列化类到内存中.第四,启动worker的线程池.第五,收集所有的task任务.接下就可以分配资源给task了,…