- 博客(124)
- 收藏
- 关注
原创 Hadoop优化
Hadoop优化map端数据倾斜,输入文件有不可分割的压缩包reduce端数据倾斜:分区后某个区的数据过多输入在执行MR之前。提前将小文件合并,压缩成可切片的格式使用CombineTextInputFormatmap阶段减少溢写次数:通过调整缓冲区的大小及sort.spill.percent(溢写阈值)参数值,增大触发spill的内存上限、减少合并次数:调整io.sort.f...
2020-03-15 01:11:58 197
原创 2.flink运行时架构
flink运行时组件四大组件作业管理器控制整个流处理程序的主进程,类似于sprak中的Am,它还有请求资源的职责。检查点的协调任务管理器类似于spark中的exector,含有至少一个slot。一个插槽可以执行一个任务的。资源管理器主要管理插槽,分发器为应用提交通过了一个REST接口。还提供了一个web UI。keyedProcdssFunctionProcessWindow...
2020-02-25 08:21:08 199
原创 3.Hello flink
Hello Flinkscala项目的创建可以直接使用Flink中的样板案例。创建方法为在新建项目时勾选Create from archetype。group为:org.apache.flink,id为flink-quickstart-scala.版本为1.10.0,由此省略了pom文件的烦恼。在idea中直接运行时需要在run-configuration 中勾选include depen...
2020-02-21 13:52:11 134
原创 4.Flink算子
Flink算子基本转换算子:将会作用在数据流中的每一条单独的数据上。KeyedStream转换算子:在数据有key的情况下,对数据应用转换算子。多流转换算子:合并多条流为一条流或者将一条流分割为多条流。分布式转换算子:将重新组织流里面的事件。基本转换算子基本转换算子可以将一个event中的内容转换.是一个流到另外一个流,包括Map,flatMap,filter三个转...
2020-02-21 13:52:11 226
原创 5.自定义UDF
自定义UDF和窗口普通UDFFlink暴露了所有udf函数的接口(实现方式为接口或者抽象类)。例如MapFunction, FilterFunction, ProcessFunction等等。我们可以对这些函数进行自定义,继承这个类,重写其中的方法即可.富函数相比于普通的UDF,富函数实际上提供了额外的open方法和close提供给用户做初始化和清理的操作.另外,getRuntimeCon...
2020-02-21 13:52:11 322
原创 4.RDD的运算
RDD的运算RDD运算的步骤对于RDD的运算是以下一个步骤。创建RDD对象经过一系列的transformations对RDD进行转换调用action触发RDD的计算(延迟计算)要使用spark,开发者需要编写driver用于调度运行WorkerRDD的创建在Spark中创建RDD的方式可以分为3种:从集合创建RDDval rdd1: RDD[Int] = sc.paral...
2020-02-21 01:56:11 564
原创 1.Flink一览
Flink一览什么是FlinkApache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams.Apache Flink是一个分布式流处理器,具有直观和富有表现力的API,可实现有状态的流处理应用程序。它...
2020-02-21 01:56:11 187
原创 14.Dstream
DStreamDStream是Spark Streaming提供的基本抽象,表示持续性的数据流,其实质是一个个的RDD,方法dstream.foreachRDD()可以充分的体现出这一点。所以对于DStream的操作实际是对DStream中的每一个RDD的操作。对于一个数据抽象,依旧从数据对象的获取,操作以及输出三部分研究。DStream的获取SparkStream原生就支持许多的数据源,其...
2020-02-19 03:47:30 185
原创 15.Spark源码分析
Spark源码分析各个组件介绍后面补充。。。。StandAlone模式在StandAlone模式的start-all的shell启动脚本下,在当前机器执行了JAVA_HOME/bin/java -cp ....Master和在配置的slave的机器中执行 JAVA_HOME/bin/java -cp ....Worker.这两种进程在启动后通过netty进行rpc通信。Master的启动...
2020-02-19 03:47:30 226
原创 5、kafka面试问题
kafka面试问题听过kafka在面试中经常被问到为此整理了20个问题及其答案~Kafka中的ISR(InSyncRepli)、OSR(OutSyncRepli)、AR(AllRepli)又代表什么?ISR:同步队列副本:This is the subset of the replicas list that is currently alive and caught-up to th...
2020-01-15 10:16:46 368
原创 12.SparkSql
SparkSqlSpark SQL is Apache Spark's module for working with structured data。是spark处理结构化数据的模块。具有Integrated,Uniform Data Access,Hive Integration,Standard Connectivity的特点。DataFrame, DataSet and RD...
2020-01-15 10:16:46 300
原创 13.sparkStreaming
Spark StreamingSpark Streaming时用于处理流式数据的框架。流数据的来源可以多种多样例如kafka,flume等等,其核心是Dstream,a DStream is represented by a continuous series of RDDs, Any operation applied on a DStream translates to operations...
2020-01-15 10:16:46 105
原创 11.SparkCore练习
SparkCore练习2019-07-17_38_6502cdc9-cf95-4b08-8854-f03a25baa917_47_2019-07-17 00:00:54_null_14_79_null_null_null_null_22019-07-17_38_6502cdc9-cf95-4b08-8854-f03a25baa917_27_2019-07-17 00:00:59_null_3_...
2020-01-11 14:52:06 252
原创 19.集合常用方法
集合常用方法基本属性和操作是否包含list.contains()反转list.reverse()从左取前面n个元素list.take()从右取前面n个元素list.takeright根据条件取元素,与模式相关,之后补充。。。。。list.collect获取长度list.length生成迭代器list.iterator...
2020-01-10 12:42:26 308
原创 20.三个集合的小练习
三个集合的小练习wordCount简单/** * 对一个List进行wordCount,返回出现次数最多的三个单词,及其出现次数 */object WordCountSimple { def main(args: Array[String]): Unit = { // WordCount val list = List("Hello"...
2020-01-10 12:42:26 159
原创 5.RDD的序列化和依赖
RDD的序列化和依赖RDD的序列化在RDD中如果在Driver中new的对象的方法和属性在Execture上有使用的话,需要将这个对象进行序列化后传递object SerDemo { def main(args: Array[String]): Unit = { val conf: SparkConf = new SparkConf().setMaster("...
2020-01-10 12:42:26 326
原创 10.累加器和广播变量
累加器和广播变量累加器在创建函数时,如果需要捕获自由变量,那么包含指向被捕获变量的引用的函数就被称为闭包函数。在实际计算时,Spark 会将对 RDD 操作分解为 Task,Task 运行在 Worker Node 上。在执行之前,Spark 会对任务进行闭包,如果闭包内涉及到自由变量,则程序会进行拷贝,并将副本变量放在闭包中,之后闭包被序列化并发送给每个执行者。因此,当在 foreach 函...
2020-01-10 12:42:26 260
原创 8.数据的读取和保存
数据的读取和保存Text文件sc.textFile(""),用hadoop的TextInputFormat读入数据json文件要求读入的json文件一行是一个json.因为json一开始就是使用的textFile按行读取。非常麻烦。读入时可以使用scala.util.parsing.json.JSON工具类object Text { def main(args: ...
2020-01-10 12:42:26 175
原创 6.RDD的持久化和检查点
RDD的持久化和检查点RDD的持久化RDD可以通过persist方法或chche方法将前面的计算结果缓存到内存中,默认情况下presist()会将数据以序列化的形式缓存在JVM的堆空间之中。presist可以传入StorageLevel.的属性配置OFF_HEAP有利于立即回收内存。使用缓存持久化时不会删除血缘关系,父RDD的血缘关系还存在RDD的检查点Spark 中对于数据的保存除了...
2020-01-10 12:42:26 258
原创 9.Spark源码
Spark源码Yarn部署流程SubmitSparkSubmitmainnew SparkSubmitArguments(调用Handle用于封装参数 ) override protected def handle(opt: String, value:String: Boolean = {opt match {case NAME => name = valuecas...
2020-01-10 12:42:26 88
原创 7.分区器
分区器HashPartition获取hash值对分区数取余获取所在区的index,容易造成数据倾斜RangerPartition将一定范围内的数映射到某一个分区内,尽量保证每个分区中数据量的均匀,而且分区与分区之间是有序的,一个分区中的元素肯定都是比另一个分区内的元素小或者大,但是分区内的元素是不能保证顺序的。RangerPartition要求数据一定能够排序。获取一个rangeBo...
2020-01-10 12:42:26 222
原创 1.开始
开始什么是ScalaScala是一门以Java虚拟机为运行环境的静态类型编程语言Scala是一门多范式的编程语言,支持面向对象和函数式编程Scala的源代码会被翻译成java字节码,然后运行在JVM之上。并可以调用现有的java类库简洁高效Scala源于Java,学好java有利于学习ScalaScala的伴生类和伴生对象package cn.lpc// Scala是完全面...
2020-01-08 05:58:57 81
原创 23.泛型
泛型object Generic { def main(args: Array[String]): Unit = { // Scala中泛型默认也是不可变,就算有父子关系也不行 val test : Test[User] = new Test[User]() //val test : Test[User] = new Test[Child]...
2020-01-08 05:58:57 97
原创 3.RDD介绍
RDD介绍Spark-Core是spark-streaming运行的数据支持的底层,学习spark-core主要是学习RDD及其操作RDDRDD(Resilient Distributed Dataset)是Spark中最基本的数据抽象。在代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。抽象,意味着我们用的主要是他们的共有方法不可变,对RDD的操作都会...
2020-01-07 13:28:39 270
原创 2.HelloSpark
HelloSparkPom配置spark-core的依赖以及scala的打包依赖 <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11&l...
2020-01-06 13:26:35 114
原创 1.Spark基础
Spark基础什么是sparkSpark和MapReduce,Tez一样是一个集群计算引擎,具有快速,可扩展,以及通用三个优势,具体可以查看官网~Spark组成Spark由三部分组成集群管理器Spark CoreSparkSql, SparkStreaming, Spark MLlib 以及 Spark GraghXSpark的运行模式Spark常用概念Master:类似...
2020-01-06 13:26:35 94
原创 java杂谈
sleep是一个静态方法,当前运行线程(main)休眠,静态方法拿不到对象锁,不能释放对象锁wait是一个成员方法,跟对象相关,是t2等待,能释放对象锁sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会;sleep()是Thread类的Static(静态)的方法;因此他不能改变对象的机锁,...
2020-01-03 13:00:39 82
原创 18.可变和不可变集合
可变和不可变集合对可变集合中数据的增删改之后会返回一个新的集合Scala不可变集合,就是指该集合对象不可修改,每次修改就会返回一个新对象,而不会对原对象进行修改。类似于java中的String对象可变集合,就是这个集合可以直接对原对象进行修改,而不会返回新的对象。类似于java中StringBuilder对象数组可变数组def main(args: Array[String...
2020-01-03 13:00:39 1250
原创 7.控制函数+递归
控制函数+递归递归// 递归在函数是函数式编程中最常见的算法,其包含三个主要成分// 1. 函数调用自身// 2. 函数有跳出递归的逻辑// 3. 递归调用时应有规律// 递归的一般写法 def test(num : Int) : Int = { if ( num == 1) { 1 }else{ ...
2020-01-03 13:00:39 253
原创 22.隐式转换
隐式转换当编译器编译程序发生错误,会尝试通过隐式转换将数据类型发生变化,看看是否能够编译通过,有时也叫做二次编译隐式函数object Scala_implicit { def main(args: Array[String]): Unit = { // 隐式函数以implicit关键字开头,其名字不重要,重要的是返回值和输入参数的类型 // 隐式转换的...
2020-01-03 13:00:39 117
原创 21.Scala模式匹配
Scala模式匹配Scala中的模式匹配类似于java中的switch语法,但是java中的switch只能做分支运算,在Scala中的模式匹配能做更多。模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需要匹配时,会从第一个case分支开始,如果匹配成功,那么执行对应的逻辑代码,并且跳出判断逻辑,如果匹配不成功,继续执行下一个分支进行判断。如果所有case都不匹配...
2020-01-02 13:44:49 152
原创 18.集合常用方法
集合常用方法list.contains()list.reverse()list.take()list.takerightlist.collectlist.map()//将每一个元素做操作后返回list.flatten //扁平化,将一个数据整体拆开// 等同于将falt和map融合在一起list.flatMap()// 扁平映射// 过滤list.filter// 分组/...
2019-12-30 16:02:22 100
原创 13.Scala继承和封装
继承和封装class 子类名 extends 父类名 { 类体 }(1)子类继承父类的属性和方法。(和Java一样)(2)Scala是单继承(和Java一样)有参构造继承object Scala10_Object5 {}class Parent11(name : String){}// Scala中继承也采用extends关键字,只支持单继承// 如果父类存...
2019-12-27 13:27:59 330
原创 11.Scala属性和访问权限
Scala属性和访问权限在类中声明的变量就是属性基本语法[修饰符] var|val 属性名称 [:类型] = 属性值在scala中,当使用var声明了一个属性时,scala在编译时会自动为该属性构造类似set和get方法(名字不符合javabean规范)。一下是反编译的源码public class User{ private String name = "zhangsan...
2019-12-27 13:27:59 687
原创 17.Scala面向对象的扩展用法
Scala面向对象的扩展用法类型检查和转换使用isInstanceof[],判断类型,使用asInstanceof 进行类型强转。其中中括号表示的是泛型object Scala_24ObjectExt { def main(args: Array[String]): Unit = { // 获取类信息 val value = classOf[User...
2019-12-27 13:27:59 119
原创 8.Scala包
Scala中的包package 包名.类名Scala中的包的基本语法与java一致,其包的作用也与java一致,但是在功能上有更多的扩展Scala中包的作用当类很多时可以对类进行管理区分相同名字的类控制访问的范围Scala中包的扩展功能类所在的路径和包没有关联例如可以在file目录下构建cm.lpc.memory包package 关键字可以声明多次package...
2019-12-27 13:27:59 102
原创 15.Scala单例
Scala单例Scala是完全面向对象的语言,所以没有静态的操作,即在Scala中没有静态的概念。但是可以通过单例对象来模拟类对象。若单例对象名与类名一致,则称该单例对象为这个类的伴生对象,这个类的所有静态内容都可以放在它的伴生对象之中声明。语法object Person{ val country:String="China"}单例对象采用object关键字声明单例...
2019-12-27 13:27:59 205
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人