![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
大数据
文章平均质量分 61
记录大数据的学习和工作的坑
Icedeny
明辨笃行
展开
-
Spark核心编程3-map,mapPartitions,flatMap,glom,分区,groupby
一、算子介绍(RDD方法既称为算子)RDD方法分为转换和行动两个内容。转换:功能的补充,也就是复杂业务逻辑,生产多个RDD的过程,旧的RDD包装成新的RDD,相互包装补充;行动:触发任务调度和作业的执行。封装并不会触发任务的执行,如flatmap,map等,只有collect等才能触发。二、转换算子(RDD方法)根据数据类型不同可以把算法分为三大类型单value ,双value,key-value;2.1 mapmap函数式将处理的数据逐条进行映射转换,可以是值或者类型的转换。.原创 2021-06-25 09:10:07 · 540 阅读 · 0 评论 -
Spark核心编程2
1.RDD执行原理 RDD是spark框架中用于数据处理的核心模型,spark框架执行数据处理时,需要申请资源后将应用程序的数据处理逻辑拆分为一个个的计算任务,并将其发到已经分配资源的计算节点上,按照指定的计算模型进行数据统计。1.1 步骤1)启动yarn环境,resoureManager和nodemanager既意味有资源了2)spark通过申请资源创建调度节点driver和计算节点executor(两者都是运行在nodemanager上,也就是实际工作的是nodemanag...原创 2021-06-23 15:37:22 · 209 阅读 · 0 评论 -
Spark核心编程1
概念导入spark方法不同于scala,以及为了提高高并发和高吞吐的数据处理,封装3大数据结构:RDD 累加器 广播变量分布式计算模拟1.分布式计算模拟案例1(一个driver 和一个executor)package com.byxrs.spark_core.test_distributedimport java.net.Socket/** * 分布式小demo * */object Driver { def main(args: Array[String]): Un...原创 2021-06-21 16:45:22 · 316 阅读 · 0 评论 -
Spark运行架构
driver和executor概念1. 作为两大核心组件,driver是驱动器节点,执行spark的main方法,既启动程序。另外在过程中还能在executor之间调度任务task,跟踪executor的执行情况,在ui页面查看运行情况。2. executor简单来说就是1)执行任务,并将任务结果返回给driver,2)可以通过自身块block manager为用户程序要求缓存的RDD提供内存存储,RDD是直接缓存在executor进程内的,这样提高运算效率。细化来说就是集群中工作节点worker原创 2021-06-11 14:45:23 · 116 阅读 · 1 评论 -
spark运行环境准备
运行环境我们的项目程序需要结合运行环境(资源)才能运行和计算,为此需要准备好环境。xcall jps 查看机器进程;目前有的模式是local模式,独立运行模式,和yarn模式(生产环境使用最多)local模式(1台机器)不需要其他节点资源可以在本地运行spark的环境,不同于在IDEA运行的local方式(开发环境),local模式,不同于前面篇章代码里的local(运行完就不存在了),这里的local模式是指在本地安装好什么时候使用都可以;;一般步骤是在linux中是解压spark-.原创 2021-06-11 13:59:55 · 228 阅读 · 1 评论 -
spark入门概念和案例
概念spark是基于内存的大数据计算引擎;一般数据处理的流程是从存储设备(如HDFS)拿到数据,进行逻辑处理(scala语言),将处理的结果存储到介质中(mysql等);产生的背景:mapreduce适合一次性的简单处理,当出现并行以及循环处理的场景则更加适合使用spark,因为spark会将处理结果放到memory中,作为下次计算过程中的输入,在内存机制和调度机制下这样速度会快。但是会有问题就是在集群中会造成资源不足的问题,需要的资源更加多。spark中的多个job通信基于内存,如果内存不足原创 2021-06-10 18:27:45 · 232 阅读 · 0 评论 -
scala面向对象-继承
概念和格式extends关键字,子类能够使用父类的属性和方法;继承是先调用父类构造器,再调用子类构造器???(以下并没有遵循这个原则,待考证);package com.byxrs.chapter06object Test7_Extends { def main(args: Array[String]): Unit = { val worker = new Worker("youyou", 16) println("===============》") val wo原创 2021-06-02 19:01:56 · 82 阅读 · 0 评论 -
scala面向对象-封装
概念把数据和对数据的操作进行封装在一起,只能通过被授权的操作才能对数据进行操作;scala的public属性,底层是private,为此不建议直接将属性设置为private;有时候为了和java相互调用进行交互,而java框架都是利用反射调用get和set方法,为此scala中在属性上增加@BeabProperty;访问权限scala中属性和方法默认为public,但是并无public关键字,private只有在类的内部和伴生对象中使用;protected同类和子类可以访问,同包不能访问原创 2021-06-02 12:20:23 · 325 阅读 · 0 评论 -
scala面向对象-包
包定义,作用package 包区分相同名字的类,既相同名字的类可以存在不同的包中,不会引发冲突;分模块的来控制类控制访问权限命名一般小写字母+“.” 不能用关键字或者数字开头;一般是:com.公司名称.项目名称.模块名称包的风格1. 类似javacom.公司名称.项目名称.模块名称2. 用嵌套风格(貌似没怎么看到这样的项目,后期遇到补充)package com{ package alibaba{ package scala{ } }}...原创 2021-06-01 10:52:28 · 56 阅读 · 0 评论 -
scala之Map
一、概念Map是一个散列表,键值对存储方式,也分为 可 变 Map (scala.collection.mutable.Map) 和 不 可 变 Map(scala.collection.immutable.Map),其中不可变的是有序的,可变的是无序的;二、Map构建1. 默认是不可变的,.key-value 类型支持 Anyobject Test04_Map { def main(args: Array[String]): Unit = { //不可变 Map 是有序,构建原创 2021-05-27 18:12:02 · 3168 阅读 · 0 评论 -
scala列表-List
List估计是项目中使用比较频繁的类型,为此记录下一些常用的知识点一、概念scala的List不同于java,它是可以直接存放数据的,默认是不可变的类型,属于序列seq;集合中可以存放重复对象二、List1.创建默认是不可变;可以放任意数据;空列表创建可以使用Nil对象;object Test04_List { def main(args: Array[String]): Unit = { /** * 1 默认情况下,List是不可变的scala.coll原创 2021-05-27 15:51:36 · 494 阅读 · 0 评论 -
scala-面向对象(中)
一,项目中的package在一个项目中,不同的包可以有相同的类名而不引发冲突;命名规则:只能包含数字、字母、下划线、小圆点.,但不能用数字开头, 也不要使用关键字;一般是小写字母+小圆点,一般是 com.公司名.项目名.业务模块名包可以包含类、对象和特质 trait,但不能包含函数/方法或变量的定义。1) 在 Scala 中,import 语句可以出现在任何地方,并不仅限于文件顶部,import 语句的作用一直 延伸到包含该语句的块末尾。这种语法的好处是:在需要时在引入包,缩小 import原创 2021-05-27 13:52:04 · 78 阅读 · 0 评论 -
scala面向对象-类和对象
一、类 对象一切皆为对象,类是抽象的,对象是具体的,类是对象的模板;val cat = new Cat //创建对象cat.age = 10 //赋值var age: Int = _ // _ 表示给 age 一个默认的值 ,如果 Int 默认就是 0属性和成员变量:1) [访问修饰符] var 属性名称 [:类型] = 属性值 2) 属性的定义类型可以为任意类型,包含值类型或引用类型3) Scala 中声明一个属性,必须显示的初始化,然后根据初始化数据的类型自动推断,..原创 2021-05-24 16:56:43 · 137 阅读 · 0 评论 -
scala-函数式编程
一、scala是函数式编程和面向对象的结合先学习基础,到面向对象,再到高级部分二、概念方法:函数:和方法一样,只是函数运用更加灵活;函数是一等公民,像变量一样可以作为参数使用,也可将函数赋值给一个变量,重要的是函数的创建不依赖类或者对象。函数式编程:是一种编程范式,思想就是将过程作为一个整体,可以被调用;最重要为函数;函数可以是一种数据类型,作为输入输出;三、函数def 函数名 ([参数名: 参数类型], ...)[[: 返回值类型] =] {语句...return 返回值原创 2021-05-24 11:02:39 · 279 阅读 · 1 评论 -
scala基础语法3--流程控制
一、与java一样有如下1顺序控制 2分支控制 3)循环控制 注:IDEA 快捷键 ctrl+b可以查看源码二、if分支在做数学计算的时候,scala 包中(默认引入的) 的 math 的包对象有很多方法直接可用x1.formatted("%.2f") 是保留两位小数,实际项目中可能有需要用到嵌套分支不要超过 3 层scala 中没有 switch,而是使用模式匹配来处理。三、for循环for 推 导式(for comprehension)或 for 表达式(..原创 2021-05-21 16:36:52 · 108 阅读 · 0 评论 -
scala基本语法2
一、运算符算术运算符+, - , * , / , % 重点/、% 注:在 scala 中没有 ++ 和 --, 而使用 +=1 和 -= 1 除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃 小数部分// / 的使用 var r1 : Int = 10 / 3 // 3 var r2 : Double = 10 / 3 // 3.0 var r3 : Double = 10.0 / 3 // 3....原创 2021-05-21 13:52:19 · 164 阅读 · 0 评论 -
二、scala基本语法
一、开发注意事项1) 以 “.scala" 为扩展名。 2) 程序的执行入口是 main()函数。 3) 严格区分大小写。 4) 每个语句后不需要分号(Scala 语言会在每行后自动加分号)。 5) 如果在同一行有多条语句,除了最后一条语句不需要分号,其它语句需要分号。二、转义字符常用的有 \t \n \\ \" \r三、输出3方式1) 字符串通过+号连接(类似 java)。 2) printf 用法 (类似 C 语言)字符串通过 % 传值。 ...原创 2021-05-21 11:02:29 · 253 阅读 · 1 评论 -
Scala的概念入门和前期准备
最近接触到大数据的项目,其中用到内存级别计算框架Spark,而Spark是scala编写,由此延伸到scala的学习。一、是什么 1.类似java 编译成.class文件,运行在jvm上; 2.面向对象和函数式编程的静态类型编程语言; 3.高效简洁二、前期使用准备 1.搭建scala环境,自行查询 2.开发工具IDEA,需要安装scala插件三、怎么用 1.学习特有语法,规范使用,并且区别于java 2.搭建...原创 2021-05-19 15:06:13 · 119 阅读 · 0 评论