随笔分类 - 大三寒假
摘要:配置环境变量: 在master节点的终端中执行:vim ~/.bashrc 添加如下配置:export SPARK_HOME=/opt/module/spark-3.1.2 export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin 运行source命令使配
阅读全文
摘要:1.打开file打开ProjectStructure 2.找到Artifact,点击+,打开jar选择From modules 3.选择main class 4.将左框中的不需要的去掉只保留下图两项 5.apply,然后选择Build->Build Artifacts…,在弹出的窗口选择Bulid就
阅读全文
摘要:1.打开file打开settings,找到plugins,在里面搜索scala并下载 2.新建maven项目 3.将pom.xml文件清空粘贴下面内容: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apach
阅读全文
摘要:在spark-shell进行词频统计: flatMap将每一行按空格才分成为单词,map映射生成键值对,将单词计数,reduceByKey将相同单词叠加 wordCount.collect()将结果汇集,针对集群 结果: 编写独立程序进行词频统计: 新建wordCount.scala写入以下代码 i
阅读全文
摘要:使用Scala编写的程序需要使用sbt进行编译打包,相应的,Java程序使用 Maven编译打包,而 Python程序通过spark-submit直接提交 sbt编译打包: 1.安装sbt 下载sbt-launch.jar,拷贝到虚拟机中 2.穿件sbt脚本 创建 sbt 脚本(vim ./sbt)
阅读全文
摘要:在spark shell中运行代码: Spark Shell 提供了简单的方式来学习Spark API Spark Shell可以以实时、交互的方式来分析数据 Spark Shell支持Scala和Python 一个Driver就包括main方法和分布式集群 Spark Shell本身就是一个Dri
阅读全文
摘要:1.下载安装文件: Spark安装包下载地址: http://spark.apache.org 进入下载页面后,点击主页右侧的“Download Spark”按钮进入下载页面,下载页面中提供了几个下载选项,主要是Spark release及Package type的选择,如下图所示。第1项Spark
阅读全文
摘要:Spark三种部署方式: Standalone,类似于MapReduce1.0 ,slot为资源分配单位 Spark on Mesos,Mesos和Spark有一定的亲缘关系 Spark on YARN Mesos和Yarn联系: 用Spark架构满足批处理和流处理需求: 用Spark架构具有如下优
阅读全文
摘要:窄依赖与宽依赖的区别: 窄依赖:表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应于一个子RDD的分区 宽依赖:表现为存在一个父RDD的一个分区对应一个子RDD的多个分区 Stage的划分: Spark通过分析各个RDD的依赖关系生成了DAG再通过分析各个RDD中的分区之间的依
阅读全文
摘要:设计背景: 许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘工具,共同之处是,不同计算阶段之间会重用中间结果 目前的MapReduce框架都是把中间结果写入到HDFS中,带来大量的数据复制、磁盘I0和序列化开销 RDD就是为了满足这种需求而出现的,它提供了一个抽象的数据架构 我们不必担心底层
阅读全文
摘要:1.为应用构建起基本的运行环境,即由Driver创建一个SparkContext进行资源的申请、任务的分配和监控 2.资源管理器为Executor分配资源,并启动Executor进程 3. sparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stag
阅读全文
摘要:基本概念: RDD:是Resillient Distributed Dataset(弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型 DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系 Executor:是运行在
阅读全文
摘要:在实际应用中,大数据处理主要包括以下三个类型: 复杂的批量数据处理,通常时间跨度在数十分钟到数小时之间 基于历史数据的交互式查询,通常时间跨度在数十秒到数分钟之间 基于实时数据流的数据处理,通常时间跨度在数百毫秒到数秒之间 当同时存在以上三种场景时,就需要同时部署三种不同的软件: 复杂的批量数据处理
阅读全文
摘要:实验 2 Scala 编程初级实践 1.计算级数 请用脚本的方式编程计算并输出下列级数的前 n 项之和 Sn,直到 Sn 刚好大于或等于 q 为止,其中 q 为大于 0 的整数,其值通过键盘输入。 例 如 , 若 q 的 值 为 50.0 , 则 输 出 应 为 : Sn=50.416695 。 请
阅读全文
摘要:WorldCount: import java.io.File import scala.io.Source object WordCount{ def main(args: Array[String]): Unit ={ val dirfile = new File("F://english")
阅读全文
摘要:列表的遍历: 可以使用for循环遍历 也可以使用foreach进行遍历 映射的遍历: 映射遍历的基本格式: for ( (k,v) <- 映射) 语句块 也可以使用foreach来实现对映射的遍历: 也可以用下面这种方式:kv._1相当于键,kv._2相当于值 map操作: map操作是针对集合的典
阅读全文
摘要:为了让函数字面量更加简洁,我们可以使用下划线作为一个或多个参数的占位符只要每个参数在函数字面量内仅出现一次 下面给出一个示例: val numList = List(-3, -5 , 1, 6, 9) numList.filter(x=>x>0) numList.filter(_>0) 由于运行结果
阅读全文
摘要:匿名函数; 我们不需要给每个函数命名,这时候可以使用匿名函数: ( num: Int ) => num*2 上面这种匿名函数的定义形式,我们经常称为“Lambda表达式”。“Lambda表达式”的形式如下: ( 参数 ) => 表达式//参数只有一个,括号可以省略 示例: val myNumFunc
阅读全文
摘要:函数字面量: 字面量包括整数字面量、浮点数字面量、布尔型字面量、字符字面量、字符串字面量、符号字面量、函数字面量和元组字面量 函数字面量可以体现函数式编程的核心理念: 在函数式编程中,函数是“头等公民”,可以像任何其他数据类型一样被传递和操作,也就是说,函数的使用方式和其他数据类型的使用方式完全一致
阅读全文
摘要:最常见的模式匹配是match语句,match语句用在当需要从多个分支中进行选择的场景。 通配符_相当于Java中的default分支。 match结构中不需要break语句来跳出判断,Scala从前往后匹配到一个分支后,会自动跳出判断。 另外在模式匹配的case语句中可以使用变量 val coloN
阅读全文