SparkStreaming-Kafka数据的消费

1、保证元数据恢复,就是Driver端挂了之后数据仍然可以恢复

// 创建StreamingContext对象
val ssc: StreamingContext =  StreamingContext.getOrCreate(checkpointPath,
      () => BatchProcessTopic.createContext(brokers, topics, batchseconds,
        checkpointPath, offset, maxRatePerPartition,jobName,localFlag,processDay,source)) 
// BatchProcessTopic对象中调用checkpoint   
ssc.checkpoint(checkpointDirectory)

2、Kafka的调优

  //sparkConf初始化
    val sparkConf = new SparkConf().setAppName(jobName)
      .set("spark.default.parallelism", REDUCE_PARALLELISM) //调整程序处理的并行度
      .set("spark.streaming.backpressure.enabled", "true") //开启后spark自动根据系统负载选择最优消费速率(反压机制),测试重跑跑数据代码 true->false
      .set("spark.streaming.kafka.maxRatePerPartition", maxRatePerPartition) //设置每秒每个分区最大获取日志数,控制处理数据量,保证数据均匀处理。
      .set("spark.streaming.kafka.maxRetries", KAFKA_RETRIES) //获取topic分区leaders(kafka中leade有时会发生变换)及其最新offsets时,调大重试次数。
      .set("spark.streaming.stopGracefullyOnShutdown", "true") //确保在kill任务时,能够处理完最后一批数据,再关闭程序,不会发生强制kill导致数据处理中断,没处理完的数据丢失
      .set("spark.streaming.backpressure.initialRate", "10")  //限制第一次批处理应该消费的数据,因为程序冷启动 队列里面有大量积压,防止第一次全部读取,造成系统阻塞

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值