Kakfa揭秘 Day8 DirectKafkaStream代码解析 今天让我们进入SparkStreaming,看一下其中重要的Kafka模块DirectStream的具体实现. 构造Stream 首先,从工厂方法开始,在工厂方法createDirectStream中,有两类关键内容: fromOffset:是一个HashMap,指定我们要读取的topic和Partition. Decoder:为什么需要Decoder,是因为Kafka并不对数据有任何的处理,在发送中并不进行解码,需要在接收端…
Kakfa揭秘 Day9 KafkaReceiver源码解析 上一节课中,谈了Direct的方式来访问kafka的Broker,今天主要来谈一下,另一种方式,也就是KafkaReceiver. 初始化 Direct和普通Receiver方式,最大的区别,是元数据的管理方式. Direct方式是没有通过zookeeper,由应用自身来管理. 而对比Receiver方式,我们可以看到需要传入zookeeper的地址. 在Receiver的工厂方法,有一些比较重要的参数: zkQuorum,就是zoo…
Kakfa揭秘 Day4 Kafka中分区深度解析 今天主要谈Kafka中的分区数和consumer中的并行度.从使用Kafka的角度说,这些都是至关重要的. 分区原则 Partition代表一个topic的分区,可以看到在构造时注册了zookeeper,也就是说kafka在分区时,是被zk管理的. 在实际存储数据时,怎么确定分区. 咱们从kafka的设计开始,为了完成高吞吐性,关键有两点设计: 使用了磁盘操作系统级的页page的访问,据说在顺序读写时比使用内存速度更快. 使用Topic进行分布…
Catalyst揭秘 Day8 Final 外部数据源和缓存系统 今天是Catalyst部分的收官,主要讲一些杂项内容. 外部数据源处理 什么叫外部数据源,是SparkSql自己支持的一些文件格式,以及一些自己自定义格式的文件开发. 让我们从文件的读取api开始,可以看到最终会创建一个DataFrame,当中比较关键的是relation方法. 首先,会以反射方式获取provider. 我们以json文件为例,其provider为json.DefaultSource.可以看到继承自HadoopFs…
Catalyst揭秘 Day6 Physical plan解析 物理计划是Spark和Sparksql相对比而言的,因为SparkSql是在Spark core上的一个抽象,物理化就是变成RDD,是SparkSql和Spark core之间的衔接点. Physical Plan也是Catalyst变成Spark作业的最后一个阶段. 生成SparkPlan 从代码,我们可以看到SparkPlan的生成包含了两个步骤,首先会调用SparkPlanner的plan方法,生成SparkPlan,调用pr…
Kakfa揭秘 Day7 Producer源码解密 今天我们来研究下Producer.Producer的主要作用就是向Kafka的brokers发送数据.从思考角度,为了简化思考过程,可以简化为一个单机版本的消息队列,只是这个消息队列在远程. Producer.java 让我们从官方的Example开始. 主要进行了两步操作,第一步是进行producer的初始化,第二步是发送数据. Producer初始化 分布式系统一般来说只是在单机的基础上加上分布式的通讯和调度而已. 在初始化时有一些重要的参…
Kakfa揭秘 Day3 Kafka源码概述 今天开始进入Kafka的源码,本次学习基于最新的0.10.0版本进行.由于之前在学习Spark过程中积累了很多的经验和思想,这些在kafka上是通用的. 总体 首先从总体方式进行一下分析,进入最关键的core. 从源码角度看,最关键的是标红的几个模块. admin是管理模块,主要管理Topic和Partition相关的东西. client客户端模块,给客户端(consumer.producer.broker等的总称)提供各种支持功能. cluster…
Spark Streaming揭秘 Day8 RDD生命周期研究 今天让我们进一步深入SparkStreaming中RDD的运行机制.从完整的生命周期角度来说,有三个问题是需要解决的: RDD到底是怎么生成的 具体执行的时候和Spark Core上的执行有所不同 运行之后对RDD如何处理,怎么对已有的RDD进行管理 今天主要聚焦于第一个问题. 从DStream开始 DStream类的注释很明确的说明了,DStream中包含以下内容: DStream依赖的其他DStream(第一个DStream是…
031 删除工作表中的空行 如果需要删除工作表中所有的空行,可以使用下面的代码. Sub DelBlankRow() DimrRow As Long DimLRow As Long Dimi As Long rRow= Sheet1.UsedRange.Row LRow= rRow + Sheet1.UsedRange.Rows.Count - 1 Fori = LRow To rRow Step -1 If Application.WorksheetFunction.CountA(Rows(i…
一.PWM概述: PWM(Pulse Width Modulation):脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形. PWM 的几个基本概念: 1) 占空比:占空比是指在一个周期内,信号处于高电平的时间占整个信号周期的百分比,方波的占空比是50%. 2) 调制频率:周期的倒数. 3) 脉冲宽度:信号处于高电平的时间. 二.nRF51822的PWM产生: NRF51822 通过Timer.PPI 和GPIOTE 的配合实现PWM 的功能,由Timer 产生一个事件,…