
Spark
文章平均质量分 93
偷偷放晴的天空
这个作者很懒,什么都没留下…
展开
-
Spark自定义集合简单介绍
集合浅析文章目录集合浅析AppendOnlyMapBitSetCompactBufferSizeTrackingAppendOnlyMapSizeTrackerExternalAppendOnlyMapMedianHeapOpenHashMapOpenHashSetPartitionedAppendOnlyMapPartitionPairBufferPrimitiveKeyOpenHashMapPrimitiveVectorPrimitiveVectorAppendOnlyMap简单介绍Append原创 2021-01-21 15:01:24 · 523 阅读 · 1 评论 -
spark涉及的设计模式-创建型- 建造者模式
spark涉及的模式-创建型- 建造者模式文章目录spark涉及的模式-创建型- 建造者模式定义:该模式的应用建造者模式角色结构具体实现定义:将一个复杂的构造和他的表示分离,是的相同的构建过程可以创建不同的表示该模式的应用该模式主要关注于各种部件的组装问题。回想Spark1.X时代,那是想要使用一个Spark环境就必须创建一个SparkConf,然后将它传入一个SparkContext的构造方法内。当然了还有sqlContext和hiveContext。这些由用户自行创建都是比较凌乱的,没有进行原创 2020-07-31 14:39:59 · 479 阅读 · 0 评论 -
Spark涉及的设计模式-创建型-原型模式
Spark涉及的设计模式-创建型-原型模式文章目录Spark涉及的设计模式-创建型-原型模式定义使用原型模式在Spark中的应用定义使用原型实例指定创建对象的种类,并通过拷贝这些对象的原型创建新的对象。使用原型模式主要用于对象的复制,无论时java和scala都会提供一个Cloneable接口。他们的左右只有一个,就是实现了该接口之后可以调用对象的clone方法。其实scala的cloneable接口也是继承的java的cloneable的接口。package scala/** * Cl原创 2020-07-30 15:57:17 · 530 阅读 · 1 评论 -
Spark涉及的设计模式-创建型-工厂方法模式
设计模式-创建型-工厂方法模式文章目录设计模式-创建型-工厂方法模式工厂接口工厂实现客户端为什么不用抽象工厂模式说在前面的话:说到工厂方法模式不得不说的就是简单工厂模式(又名静态方法模式),简单工厂模式就是他的行为就很简单,就是定义一个接口用来创建对象。但是它创建工厂类的时候是通过客户端传入参数进行决定创建什么工厂的。这样如果需要添加一个工厂那么就需要改变这个工厂类。这样就违背了开闭原则。而工厂方法模式则不通,他是通过客户端就决定实例化哪个工厂进行决定的,这样需要修改的是客户端和添加新的工厂类这里我原创 2020-07-30 15:09:44 · 447 阅读 · 0 评论 -
SparkRPC源码分析之TransportClientFactory
TransPortClientFactoryTransportClientFactory是创建TransportClient的工厂方法。该类是使用Java语言写的不是scala,主要方法为createClient方法.这里的是简单工厂模式,一般简单工厂模式使用的是if-else逻辑进行判断先看他的构造方法public TransportClientFactory( Transp...原创 2019-05-08 19:47:18 · 438 阅读 · 0 评论 -
SparkRPC源码分析之TransportServer
SparkRPC源码分析之TransportServer在上一篇博客中写到了Transprotclient的初始化,也就是那个很重要的currentMap里面数据的初始化,本次分析服务端初始化过程。先看构造方法的源代码//创建一个TransportServer,绑定到给定主机和给定端口,(如果为0)绑定到任何可用的主机和端口。//如果不想绑定到任何特殊主机,请将“hostToBind”设置...原创 2019-05-09 18:17:56 · 236 阅读 · 0 评论 -
SparkRPC源码分析之ConfigProvider
Spark配置信息Spark的配置信息读取一般都会通过ConfigProvider类来完成,该类是一个抽象类,它的一系列子类实现了从各种渠道中读取配置信息到内存中[Map]这里是一个javaMap不是ScalaMap代码如下所示package org.apache.spark.internal.configimport java.util.{Map => JMap}import ...原创 2019-05-07 18:55:29 · 334 阅读 · 0 评论 -
SparkRPC源码分析之Netty基础知识扫盲
SparkRPC源码分析之Netty基础知识扫盲在上面三篇文章中,我们介绍了Spark如何创建一个客户端和如何创建一个服务端。那么这些东西是什么呢?这就需要了解netty,而我本人是对netty不了解的。因此简单地看了一下netty需要的东西,写了以下简单的netty入门级程序。仅供参考服务端代码:import org.jboss.netty.bootstrap.ServerBootstra...原创 2019-05-10 16:53:38 · 285 阅读 · 0 评论 -
SparkRPC源码分析之RPC管道与消息类型
SparkRPC源码分析之RPC管道与消息类型我们前面看过了netty基础知识扫盲,那我们应该明白,ChannelHandler这个组件内为channel的各种事件提供了处理逻辑,也就是主要业务逻辑写在该组建内。Spark的RPC也不会例外,因此我们看一下Spark的Handeler怎么调用的。在TransPortClientFactory初始化客户端之前有一条代码为TransportChann...原创 2019-05-17 14:43:26 · 517 阅读 · 0 评论 -
SparkRPC源码分析之ChunkFetchRequest、ChunkFetchSuccess和ChunkFetchFailure消息
StreamManager文章目录StreamManager作用方法ChunkFetchRequest消息ChunkFetchSuccess和ChunkFetchFailure消息作用 StreamManager用来从一个流中提取单个的块。这会在TransportRequestHandeler中用来相应fetchChunk请求。流的创建超出了传输层的范围,但是一个给定的流保证了仅被一个客...原创 2019-06-14 08:58:00 · 1349 阅读 · 0 评论 -
SparkRPC源码分析之RpcRequest、RpcResponse和RpcFailure消息
SparkRPC源码分析之RpcRequest、RpcResponse和RpcFailure消息文章目录SparkRPC源码分析之RpcRequest、RpcResponse和RpcFailure消息RpcRequestRPCResponse 和RpcFailure 消息RpcRequest和上一个ChunkFetchRequest消息一样。入口都是从TransportRequestHand...原创 2019-07-01 20:58:30 · 1025 阅读 · 0 评论 -
SparkRPC源码分析之OneWayMessage消息
SparkRPC源码分析之OneWayMessage消息文章目录SparkRPC源码分析之OneWayMessage消息OneWayMessageOneWayMessage首先看一下OneWayMessage的定义public final class OneWayMessage extends AbstractMessage implements RequestMessage 什么是...原创 2019-07-01 21:59:18 · 2192 阅读 · 0 评论 -
Spark 加载PMML格式模型在线预测
Spark 加载PMML格式模型在线预测Spark 加载PMML格式的模型文件目前spark自身是不支持这个pmml类型模型的,想要使用它可以采用github上面的插件jpmml-evaluator-sparkgithub地址 但是它上面的东西描述的优点抽象,使用的时候可能遇到很多的坑,比如使用的时候导入依赖<dependency> <groupId>or...原创 2019-09-06 11:49:39 · 2666 阅读 · 4 评论 -
Spark统计类StatCounter类
statCounterorg.apache.spark.util包中一个用于统计的类,这个类可以对一组数字进行统计追踪,可以统计他的计数,最大值,最小值,平均值,求和,以及可以合并两个追踪的结果merge。example:统计一下不为0的数字和为0的数值的代码如下package demoimport java.text.SimpleDateFormatimport java.util....原创 2019-01-29 17:37:33 · 1159 阅读 · 0 评论 -
illegal cyclic reference involving object InterfaceAudience
最近开发Spark应用程序,用到了scala反射,但是却一直报错循环引用 InterfaceAudience,感觉很奇怪,后来排查错因才发现,原来FileSystem类不可以作为反射的方法的参数,一旦作为参数就会报错循环引用。具体测试代码如下所示。package myreflectimport scala.reflect.runtime.universe._import org.apac...原创 2018-08-14 15:28:18 · 3874 阅读 · 0 评论 -
Spark中的aggregate算子
Spark的aggregate算子aggragete算子作为spark的算子之一,虽然没有map,reduce算子使用的多但是也是一个不容忽略的算子,但是关于这个算子的用法很多解释都含糊不清 ,下面就记载下来以备以后观看。aggregate在scala语言中本来就存在,它的输入值和返回值的类型可以不一致,而reduce函数输入和输出数据类型 必须一致。首先他需要接受一个输入的初始值,然...原创 2018-08-09 19:14:42 · 3476 阅读 · 0 评论 -
机器学习数据集
学习机器学习苦于没有数据,下面介绍几个公开的数据集UCL机器学习知识库:包括近300个不同大小和类型的数据集,可用于分类、回归、聚类和推荐系统任务。(点击打开网址)Amazon AWS数据集:包含的通常是大型数据集,可通过Amazon S3访问。这些数据集包括人类基因组项目、Common Crawl网页语料库、维基百科数据和Google Books Ngrams(点击打开网址)Kaggle:这原创 2017-09-27 11:13:07 · 796 阅读 · 0 评论 -
spark中可以影响到结果partition个数的操作
在spark中分区个数有着很重要的作用,它代表着spark作业的并行度,所以我们要很清楚的知道什么样的操作可以影响到分区个数。 请看下图。 这里罗列了spark中所有影响到分区个数的操作。原创 2017-10-30 22:31:47 · 1380 阅读 · 0 评论 -
sparkml和mllib分别实现KMeans算法
正如大家所知道的MLLib这个算法包apache已经宣布只维护不更新了,所以大家如果做算法本人推荐使用ML的算法包。 原理的话本人就不在讲了,因为很多资料都写的比较清晰明白,这里我只写代码 本人在这里写了一些sparkml和mllib的示例入门程序SparkMLimport org.apache.spark.ml.clustering.{KMeans, KMeansModel}import原创 2017-10-16 12:36:25 · 1436 阅读 · 0 评论 -
kafka版本不匹配问题
最近开发spark+kafka项目但是却遇到了很多的坑,比如Exception in thread "main" java.lang.ClassCastException: kafka.cluster.BrokerEndPoint cannot be cast to kafka.cluster.Broker这个问题比较坑,突然间一看还真的以为自己不小心写了一个类型转化的错误呢,但是实际上不是。本人开原创 2017-11-01 17:20:49 · 6985 阅读 · 0 评论 -
kafka消费者java.lang.NullPointerException
最近写kafka程序突然发现消费者会产程空指针异常,百思不得其解于是就百度寻找解决方案。参考了一下链接网上的结论但是感觉还是不怎么样于是自己一步一步寻找根源 发现源码中这么一句代码 public Map<String, ConsumerRecords<K, V>> poll(long timeout) { return null; }他直接返回了null指针,于是空原创 2017-10-25 13:52:48 · 9549 阅读 · 0 评论 -
Caused by: java.lang.NullPointerException at java.util.Properties$LineReader.readLine(Properties.ja
最近突然想起来看一下spark源码,下载下spark源码之后debug突然发现不能运行报错如下Exception in thread "main" java.lang.ExceptionInInitializerError at org.apache.spark.package$.(package.scala:91) at org.apache.spark.package$原创 2018-01-08 11:43:43 · 5289 阅读 · 0 评论 -
什么是RDD ?
突然看到以前的总结,好怀念,这里就贴出来打击看一下吧Spark知识总结RDD什么是RDD ?(Resilient Distributed Datasets)弹性分布式数据集弹性RDD可以在存储在内存和磁盘之间,并且自动或者手动切换RDD具有良好的容错性(即RDD可以通过血统转化为其他RDD)Task如果失败,会进行特定次数的重试(default 4)St原创 2018-02-01 13:24:13 · 3924 阅读 · 0 评论 -
Spark2.2中 SparkContext的初始化操作
Spark2.2中SparkContext的初始化操作SparkContext的主构造函数中执行(也就是一定会)val (sched, ts) = SparkContext.createTaskScheduler(this, master, deployMode)graph TB A[SparkContext] -->|主构造函数内调用| B[createTask原创 2018-02-03 15:29:42 · 1825 阅读 · 0 评论 -
Spark2.2Driver和Executor状态改变机制
Driver和Executor的状态改变机制我们先来看Driver的状态改变机制 源码如下 case DriverStateChanged(driverId, state, exception) => state match { case DriverState.ERROR | DriverState.FINISHED | DriverState原创 2018-02-03 23:06:10 · 790 阅读 · 0 评论 -
spark2.2 注册机制
Spark的 Master、Driver、Application注册那么我们就以Application为例看看注册机制 case RegisterApplication(description, driver) => // TODO Prevent repeated registrations from some driver if (state原创 2018-02-03 22:12:31 · 383 阅读 · 0 评论 -
SparkStage的划分(spark2.2)
SparkStage的划分(spark2.2)Spark提交stage时调用一系列的runJob()方法,最后会调用到DAGScheduler的runJob方法,该方法代码如下所示: def runJob[T, U]( rdd: RDD[T], func: (TaskContext, Iterator[T]) => U, partitio...原创 2018-03-12 17:02:30 · 374 阅读 · 0 评论 -
getCallSite方法的作用
SparkContext中getCallSite方法的作用先看图片如下:源码如下:def getCallSite(skipClass: String => Boolean = sparkInternalExclusionFunction): CallSite = { // Keep crawling up the stack trace until we fi...原创 2018-03-24 12:27:30 · 1504 阅读 · 2 评论 -
Spark的安装方法
Spark安装方法一、简单认知,什么是Spark? Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,(注:如果不保存将会消失)因此S原创 2017-05-02 16:24:09 · 661 阅读 · 0 评论