01 2022 档案

摘要:在spark-shell进行词频统计: flatMap将每一行按空格才分成为单词,map映射生成键值对,将单词计数,reduceByKey将相同单词叠加 wordCount.collect()将结果汇集,针对集群 结果: 编写独立程序进行词频统计: 新建wordCount.scala写入以下代码 i 阅读全文
posted @ 2022-01-24 21:27 风吹过半夏 阅读(106) 评论(0) 推荐(0) 编辑
摘要:使用Scala编写的程序需要使用sbt进行编译打包,相应的,Java程序使用 Maven编译打包,而 Python程序通过spark-submit直接提交 sbt编译打包: 1.安装sbt 下载sbt-launch.jar,拷贝到虚拟机中 2.穿件sbt脚本 创建 sbt 脚本(vim ./sbt) 阅读全文
posted @ 2022-01-23 21:45 风吹过半夏 阅读(180) 评论(0) 推荐(0) 编辑
摘要:在spark shell中运行代码: Spark Shell 提供了简单的方式来学习Spark API Spark Shell可以以实时、交互的方式来分析数据 Spark Shell支持Scala和Python 一个Driver就包括main方法和分布式集群 Spark Shell本身就是一个Dri 阅读全文
posted @ 2022-01-23 16:25 风吹过半夏 阅读(150) 评论(0) 推荐(0) 编辑
摘要:1.下载安装文件: Spark安装包下载地址: http://spark.apache.org 进入下载页面后,点击主页右侧的“Download Spark”按钮进入下载页面,下载页面中提供了几个下载选项,主要是Spark release及Package type的选择,如下图所示。第1项Spark 阅读全文
posted @ 2022-01-23 11:45 风吹过半夏 阅读(231) 评论(0) 推荐(0) 编辑
摘要:Spark三种部署方式: Standalone,类似于MapReduce1.0 ,slot为资源分配单位 Spark on Mesos,Mesos和Spark有一定的亲缘关系 Spark on YARN Mesos和Yarn联系: 用Spark架构满足批处理和流处理需求: 用Spark架构具有如下优 阅读全文
posted @ 2022-01-21 18:02 风吹过半夏 阅读(72) 评论(0) 推荐(0) 编辑
摘要:窄依赖与宽依赖的区别: 窄依赖:表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应于一个子RDD的分区 宽依赖:表现为存在一个父RDD的一个分区对应一个子RDD的多个分区 Stage的划分: Spark通过分析各个RDD的依赖关系生成了DAG再通过分析各个RDD中的分区之间的依 阅读全文
posted @ 2022-01-20 12:38 风吹过半夏 阅读(106) 评论(0) 推荐(0) 编辑
摘要:设计背景: 许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘工具,共同之处是,不同计算阶段之间会重用中间结果 目前的MapReduce框架都是把中间结果写入到HDFS中,带来大量的数据复制、磁盘I0和序列化开销 RDD就是为了满足这种需求而出现的,它提供了一个抽象的数据架构 我们不必担心底层 阅读全文
posted @ 2022-01-20 12:20 风吹过半夏 阅读(48) 评论(0) 推荐(0) 编辑
摘要:1.为应用构建起基本的运行环境,即由Driver创建一个SparkContext进行资源的申请、任务的分配和监控 2.资源管理器为Executor分配资源,并启动Executor进程 3. sparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stag 阅读全文
posted @ 2022-01-18 21:45 风吹过半夏 阅读(86) 评论(0) 推荐(0) 编辑
摘要:基本概念: RDD:是Resillient Distributed Dataset(弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型 DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系 Executor:是运行在 阅读全文
posted @ 2022-01-18 21:31 风吹过半夏 阅读(51) 评论(0) 推荐(0) 编辑
摘要:在实际应用中,大数据处理主要包括以下三个类型: 复杂的批量数据处理,通常时间跨度在数十分钟到数小时之间 基于历史数据的交互式查询,通常时间跨度在数十秒到数分钟之间 基于实时数据流的数据处理,通常时间跨度在数百毫秒到数秒之间 当同时存在以上三种场景时,就需要同时部署三种不同的软件: 复杂的批量数据处理 阅读全文
posted @ 2022-01-18 20:49 风吹过半夏 阅读(127) 评论(0) 推荐(0) 编辑
摘要:实验 2 Scala 编程初级实践 1.计算级数 请用脚本的方式编程计算并输出下列级数的前 n 项之和 Sn,直到 Sn 刚好大于或等于 q 为止,其中 q 为大于 0 的整数,其值通过键盘输入。 例 如 , 若 q 的 值 为 50.0 , 则 输 出 应 为 : Sn=50.416695 。 请 阅读全文
posted @ 2022-01-18 19:21 风吹过半夏 阅读(468) 评论(0) 推荐(0) 编辑
摘要:WorldCount: import java.io.File import scala.io.Source object WordCount{ def main(args: Array[String]): Unit ={ val dirfile = new File("F://english") 阅读全文
posted @ 2022-01-16 22:12 风吹过半夏 阅读(40) 评论(0) 推荐(0) 编辑
摘要:列表的遍历: 可以使用for循环遍历 也可以使用foreach进行遍历 映射的遍历: 映射遍历的基本格式: for ( (k,v) <- 映射) 语句块 也可以使用foreach来实现对映射的遍历: 也可以用下面这种方式:kv._1相当于键,kv._2相当于值 map操作: map操作是针对集合的典 阅读全文
posted @ 2022-01-16 21:22 风吹过半夏 阅读(114) 评论(0) 推荐(0) 编辑
摘要:为了让函数字面量更加简洁,我们可以使用下划线作为一个或多个参数的占位符只要每个参数在函数字面量内仅出现一次 下面给出一个示例: val numList = List(-3, -5 , 1, 6, 9) numList.filter(x=>x>0) numList.filter(_>0) 由于运行结果 阅读全文
posted @ 2022-01-16 12:16 风吹过半夏 阅读(122) 评论(0) 推荐(0) 编辑
摘要:匿名函数; 我们不需要给每个函数命名,这时候可以使用匿名函数: ( num: Int ) => num*2 上面这种匿名函数的定义形式,我们经常称为“Lambda表达式”。“Lambda表达式”的形式如下: ( 参数 ) => 表达式//参数只有一个,括号可以省略 示例: val myNumFunc 阅读全文
posted @ 2022-01-16 12:03 风吹过半夏 阅读(155) 评论(0) 推荐(0) 编辑
摘要:函数字面量: 字面量包括整数字面量、浮点数字面量、布尔型字面量、字符字面量、字符串字面量、符号字面量、函数字面量和元组字面量 函数字面量可以体现函数式编程的核心理念: 在函数式编程中,函数是“头等公民”,可以像任何其他数据类型一样被传递和操作,也就是说,函数的使用方式和其他数据类型的使用方式完全一致 阅读全文
posted @ 2022-01-16 11:18 风吹过半夏 阅读(98) 评论(0) 推荐(0) 编辑
摘要:最常见的模式匹配是match语句,match语句用在当需要从多个分支中进行选择的场景。 通配符_相当于Java中的default分支。 match结构中不需要break语句来跳出判断,Scala从前往后匹配到一个分支后,会自动跳出判断。 另外在模式匹配的case语句中可以使用变量 val coloN 阅读全文
posted @ 2022-01-15 19:49 风吹过半夏 阅读(62) 评论(0) 推荐(0) 编辑
摘要:特质概述: Java中提供了接口,允许一个类实现任意数量的接口。 Scala中没有接口的概念,而是提供了“特质(trait)”,它不仅实现了接口的功能,还具备了很多其他的特性 Scala的特质是代码重用的基本单元,可以同时拥有抽象方法和具体方法 Scala中,一个类只能继承自一个超类,却可以实现多个 阅读全文
posted @ 2022-01-15 19:17 风吹过半夏 阅读(40) 评论(0) 推荐(0) 编辑
摘要:抽象类: 如果一个类包含没有实现的成员,则必须使用abstract关键词进行修饰,定义为抽象类。 abstract calss Car{ // 是抽象类,不能直接被实例化 val carBrand: String //字段没有初始值,就是一个抽象字段 def info() //抽象方法,不需要abs 阅读全文
posted @ 2022-01-15 17:46 风吹过半夏 阅读(26) 评论(0) 推荐(0) 编辑
摘要:Apply方法: Scala自动调用Array类的伴生对象Array中的一个称为apply的方法,来创建一个Array对象myStrArr。 apply方法调用约定:用括号传递给类实例或单例对象名一个或多个参数时,Scala 会在相应的类或对象中查找方法名为apply且参数列表与传入的参数一致的方法 阅读全文
posted @ 2022-01-15 12:28 风吹过半夏 阅读(152) 评论(0) 推荐(0) 编辑
摘要:单例对象: Scala采用单例对象(singleton object)来实现与Java静态成员同样的功能。 使用object 关键字定义单例对象。 代码示例 object person { private var lastId=0//一个人的身份编号 def newPersonId()={ last 阅读全文
posted @ 2022-01-12 19:03 风吹过半夏 阅读(107) 评论(0) 推荐(0) 编辑
摘要:构造器: Scala构造器包括一个主构造器,和若干个辅助构造器。 辅助构造器的名称为this,每个辅助构造器必须调用一个之前已经定义的辅助构造器或者主构造器。 class counter { private var value= 0//value用来存储计数器的起始值 private var nam 阅读全文
posted @ 2022-01-11 22:14 风吹过半夏 阅读(49) 评论(0) 推荐(0) 编辑
摘要:class counter { var value =0//注意这里没有private修饰符,从而让这个变量对外部可见def increment(step: Int): unit= { value +=step} def current(): Int= {value} object MyCounte 阅读全文
posted @ 2022-01-10 15:15 风吹过半夏 阅读(62) 评论(0) 推荐(0) 编辑
摘要:编译和执行: 新建test.scala文件 使用scala命令:scala test.scala 也可以在Scala解释器下执行scala文件,启动scala解释器 输入:load 文件地址 要编译必须有object 对象,又有main函数: 使用scalac编译,在使用scala执行 阅读全文
posted @ 2022-01-08 18:44 风吹过半夏 阅读(44) 评论(0) 推荐(0) 编辑
摘要:类的定义: 字段用val或var关键字进行定义 方法定义:def 方法名(参数列表):返回结果类型={方法体} 使用new关键字创建一个类的实例。 方法的定义: 基本语法:def 方法名(参数列表):返回结果类型={方法体} 方法参数前不能加上val或var,所有的方法参数都是不可变类型。 无参数的 阅读全文
posted @ 2022-01-07 19:25 风吹过半夏 阅读(77) 评论(0) 推荐(0) 编辑
摘要:迭代器(Iterator): 迭代器(Iterator)不是一个容器,而是提供了按顺序访问容器元素的数据结构。 迭代器包含两个基本操作:next和hasNext。next可以返回迭代器的下一个元素,hasNext用于检测是否还有下一个元素 Iterable有两个方法返回迭代器:grouped和sli 阅读全文
posted @ 2022-01-06 18:02 风吹过半夏 阅读(47) 评论(0) 推荐(0) 编辑
摘要:容器(collection): Scala提供了一套丰富的容器(collection)库,包括序列(Sequence)、集合(Set)、映射(Map)等 根据容器的元素的组织方式和操作方式,可以分未有序的无序的,可变的不可变的等不同的容器类别 Scala用了三个包来组织容器类,分别是scala.co 阅读全文
posted @ 2022-01-05 19:38 风吹过半夏 阅读(59) 评论(0) 推荐(0) 编辑
摘要:if条件表达式: 支持嵌套 有一点与Java不同的是,Scala中的if表达式的值可以赋值给变量 While循环: 与java的while一摸一样没有太大的区别 for循环: 基本语法:for(变量<-表达式) 语句块 “变量<-表达式”被称为生成器 “守卫(guard)”的表达式:过滤出一些满足条 阅读全文
posted @ 2022-01-04 20:30 风吹过半夏 阅读(34) 评论(0) 推荐(0) 编辑
摘要:Scala有两种类型的变量: val 不可变 声明时必须被初始化,初始化后就不能再赋值 var 可变的 声明的时候需要初始化,初始化后可以被赋值 Scala的数据类型: 和Java不同的是,在Scala中,这些类型都是“类”,并且都是包scala的成员,比如,Int的全名是scala.Int。对于字 阅读全文
posted @ 2022-01-03 22:24 风吹过半夏 阅读(126) 评论(0) 推荐(0) 编辑
摘要:编程范式: 编程范式是指计算机编程的基本风格或典范模式。 常见的编程范式主要包括命令式编程和函数式编程。面向对象编程就属于命令式编程,比如C++、Java等 命令式语言是植根于冯·诺依曼体系的,一个命令式程序就是一个冯·诺依曼机的指令序列,给机器提供一条又一条的命令序列让其原封不动地执行 函数式编程 阅读全文
posted @ 2022-01-02 21:50 风吹过半夏 阅读(60) 评论(0) 推荐(0) 编辑
摘要:今日正式学习spark,先对spark进行简单的了解。 Spark框架: Spark生态系统: Hadoop与Spark的对比; Hadoop存在的缺点: 表达能力有限 磁盘IO开销大 延迟高:任务之间的衔接涉及IO开销,前一个任务执行完之前,其他任务无法开始,难以胜任复杂、多阶段的任务。 Spar 阅读全文
posted @ 2022-01-02 21:00 风吹过半夏 阅读(68) 评论(0) 推荐(0) 编辑
摘要:实验 1 Linux 系统的安装和常用命令 2.使用 Linux 系统的常用命令 (1)切换到目录 /usr/bin; (2)查看目录/usr/local 下所有的文件; (3)进入/usr 目录,创建一个名为 test 的目录,并查看有多少目录存在; (4)在/usr 下新建目录 test1,再复 阅读全文
posted @ 2022-01-02 15:49 风吹过半夏 阅读(315) 评论(0) 推荐(0) 编辑
摘要:新的一年开始新的学习,寒假老师布置了很多作业,包括每日总结的发布,spark基础实验报告,完成钉钉群的两个项目。今天主要观看了钉钉群的课程回访,第一个视频主要介绍了大数据实验平台的功能和使用,但是学校的实验平台只有大四的才能使用,与我们没关系,所以只是大致浏览的一遍,主要看了第二个视频,项目理论。 阅读全文
posted @ 2022-01-01 19:09 风吹过半夏 阅读(42) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示