热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sparkstreaming1.6自定义kafka分区

需先在sparkConf新增以下三个自定义配置项:是否开启自动重分区分区sparkConf.set(“enable.auto.repartition”,“true”)避免不必要的重

需先在sparkConf新增以下三个自定义配置项:
//是否开启自动重分区分区
sparkConf.set(“enable.auto.repartition”,“true”)
//避免不必要的重分区操作,增加个阈值,只有该批次要消费的kafka的分区内数据大于该阈值才进行拆分
sparkConf.set(“per.partition.offsetrange.threshold”,“300”)
//拆分后,每个kafkardd 的分区数据量。
sparkConf.set(“per.partition.after.partition.size”,“100”)

rdd的分区数,是由rdd的getPartitions函数决定。比如kafkardd的getPartitions方法实现如下:
sparkstreaming 1.6自定义kafka分区
offsetRanges其实就是一个数组:OffsetRange存储一个kafka分区元数据及其offset范围对应KafkaRDDPartition
可以在offsetRange生成的时候做下转换。spark2.x位置是DirectKafkaInputDstream的compute方法。
spark1.6位置是KafkaRDD apply方法 具体实现:
sparkstreaming 1.6自定义kafka分区
spark 2.x的实现如下图:
sparkstreaming 1.6自定义kafka分区


推荐阅读
author-avatar
se8529106
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有