随笔分类 - spark
摘要:spark-streaming-kafka-0-10源码分析 https://cloud.tencent.com/developer/article/1594316 spark闭包 https://mp.weixin.qq.com/s/l_tfjPMEBjx-63aYyez5Qg
阅读全文
摘要:object KafkaToHbase { def main(args: Array[String]): Unit = { //true a1 g1 ta,tb val Array(isLocal, appName, groupId, allTopics) = args val conf = new
阅读全文
摘要:/** * 从Kafka读取数据,实现ExactlyOnce,偏移量保存到Redis中 * 1.将聚合好的数据,收集到Driver端, * 2.然后将计算好的数据和偏移量在一个pipeline中同时保存到Redis中 * 3.成功了提交事物 * 4.失败了废弃原来的数据并让这个任务重启 */ obj
阅读全文
摘要:/** * 从Kafka读取数据,实现ExactlyOnce,偏移量保存到MySQL中 * 1.将聚合好的数据,收集到Driver端, * 2.然后建计算好的数据和偏移量在一个事物中同时保存到MySQL中 * 3.成功了提交事物 * 4.失败了让这个任务重启 * * MySQL数据库中有两张表:保存
阅读全文
摘要:SparkStream新版本中支持与Kafka直连的方式。下图是默认自动提交偏移量的情况。executor中的task会直连kafka对应的分区,消费完数据会把偏移量写回到kafka中特殊的__consumer_offset中 这种方式控制偏移量不够精准,无法保证数据的一致性,也就是exactly
阅读全文
摘要:shuffle是spark中一个很重要的概念,它表示的是上游分区的数据打散到下游分区中。一般来说,shuffle类的算子比如reducebykey会发生shuffle,但是并不是一定会产生。 比如,前面已经经过groupbykey进行分组了,现在再次调用shuffle类算子比如groupbykey,
阅读全文
摘要:在spark中,使用类实例,一般分为四种情况 Driver初始化一个object,这个单例对象要伴随着Task发送到Executor,但是一个Executor中只有一份,必须实现序列化接口, 使用共享成员变量有可能会出现线程安全问题 Driver实例化一个类的实例(new一个实例),在函数内容引用了
阅读全文
摘要:sample采样算子 https://www.cnblogs.com/students/p/13432692.html sortby算子为什么会触发action操作。 https://waltyou.github.io/Special-SortBy-In-RDD/
阅读全文
摘要:广播变量 广播变量将小样本的规则数据汇总到driver端并不是只能由workrer读取hdfs分区上数据在进行汇总的,可以直接由driver去读,也driver端去mysql读等等多种方式在driver端拿到广播数据。 driver端广播到对应application的executor上不是把整份数据
阅读全文
摘要:checkpoint,用来保存中间计算的结果,一般把结果保存到hdfs上。而且checkpoint一般和cache或者persist连用, 想要中间计算的结果,会先去cache的内存里面找,或者persist保存的本地磁盘,如果没有再去招checkpoint的, 要注意,cache的丢失了,顶多是往
阅读全文
摘要:将数据缓存到内存,第一次触发 Action,才会将数据放入内存,以后在触发 Action,可以复用前面内存中缓存的数据,可以提升技术效率cache 和 persist 的使用场景:一个 application 多次触发 Action,为了复用前面 RDD 的数据,避免反复读取 HDFS(数据源)中的
阅读全文
摘要:repartiton算子,重分区算子,比如上游的分区数太多,下游想要减少就可以使用,是一种物理改变分区的算子,涉及到shuffle操作。它底层调用的coalesce算子,repartiton在这里传进去了shuffle是true coalesce算子可以指定是否shuffle,coalesce函数总
阅读全文
摘要:join类型算子,是依赖于K,V类型的算子,是俩个RDD的交集操作,底层是cogroup算子+flatmapvalues算子操作。 leftouterjoin类型算子,是依赖于K,V类型的算子,是俩个RDD的交集操作,底层是cogroup算子+flatmapvalues算子操作。类似于mysql的左
阅读全文
摘要:cogroup算子是协分组算子,它的作用是合并多个RDD内容,这也是一个k,v类型的算子。 把合并起来的多个RDD中,共同的key算作key,value为一个元组,元组内容是compactbuffer,里面内容是之前RDD的value值。cogroup几个RDD就有几个RDD 具体可以看下面俩副图。
阅读全文
摘要:在Spark中,当进行程序编写的时候,都是调用一个个算子,在外部看上去似乎都是在调用RDD算子,似乎这些算子都是存在在RDD这个文件中,但是RDD中直接存在的只有map,filter这些基本算子,其他都是通过伴生类中的隐式转换调用其他文件下的算子的。这图就是源码包下的一段说明,这里主要记录一下Pai
阅读全文
摘要:reducebykey算子是Transformation 转换算子(虽然和groupbykey函数效果差不多,不过groupbykey是把同一个组的value放到一个compactbuffer里面去,reducebykey是将同组value聚合成一个value) reducebykey适用(k,v)
阅读全文
摘要:count算子 统计rdd中元素的个数 它是一个action算子,把每个分区的个数统计完之后用runjob发送到driver端,然后在driver端进行sum操作。 top算子是一个action算子(返回前num个数据,这是从大到小排好序的前num个) 这里要重点说明一下,你在调用top算子的时候传
阅读全文
摘要:forerach(func) 在rdd的每一条数据上运行func 和 foreachPartition(func)算子 在rdd上的每一个分区上运行func 这一点可以在下图源码上很明显的看出来,foreachpartition上一般用来建立数据库连接操作,一个分区分配一个连接比一条数据分配一个连接
阅读全文
摘要:intersection算子是得到多个RDD之间的交集的,下面来从源码上看一下具体处理。 intersection算子是交集,cogroup算子是并集,intersection不依赖k,v类型,cogroup依赖k,v类型 1. 把 多个RDD对应的数据map成(value,null)元组类型 2.
阅读全文
摘要:下面是distinct算子源码,他也是一个shuffle类算子,底层运用了reduceByKey算子 关键看这一句 对分区内数据先进行map操作,接着调用reduceByKey对同组内数据进行(x,_)=>x 函数操作。
阅读全文